Compare commits

..

No commits in common. 'master' and 'dev_views_Game' have entirely different histories.

2
.gitignore vendored

@ -29,7 +29,7 @@ DerivedData/
## App packaging
*.ipa
*.dSYM.zip
## *.dSYM
*.dSYM
## Playgrounds
timeline.xctimeline

@ -1,9 +1,7 @@
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 107 107" width="107" height="107">
<title>title-background-svg</title>
<style>
.s0 { fill: #ff0a02 }
</style>
<g id="Layer">
<path id="Layer" fill-rule="evenodd" class="s0" d="m72.5 81.5q-0.1-0.8-1-1-3.6 2.1-7 4-2.6 2.2-5.5 1-1.6 1.7-2 4-2.2-1.9-4.5 0-7.9-2-15.5-5-0.5 0.5-1 1-3.6-4.2-8.5-6.5-1-2-2-4-3.8-0.8-6.5-3.5-0.6-8.3-3.5-16 1.5-2 3-4-3.3-5.3 0-11 7.6-10.3 16-20 2.4-0.1 5 1 5.9-1.9 12-3 2.4-0.8 3.5-3 11.8 5.1 22.5 12 3.5-2.3 2 1 1 2 3 3 1.4 2.8 1 6 4.8 0.6 7 5-2 7.7 0 15.5-0.3 3.8-3 2.5-1.9 2.3 1 3.5-2.1 1.8-2.5 4.5-0.5-1.5-1-3-4.3 7.5-9 16-1.5-1-3.5 0z"/>
</g>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="107px" height="107px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
<g><path style="opacity:1" fill="#fffdfc" d="M -0.5,-0.5 C 35.1667,-0.5 70.8333,-0.5 106.5,-0.5C 106.5,35.1667 106.5,70.8333 106.5,106.5C 70.8333,106.5 35.1667,106.5 -0.5,106.5C -0.5,70.8333 -0.5,35.1667 -0.5,-0.5 Z"/></g>
<g><path style="opacity:1" fill="#ff0a02" d="M 72.5,81.5 C 72.44,80.9569 72.1067,80.6236 71.5,80.5C 69.1074,81.9295 66.7741,83.2628 64.5,84.5C 62.7422,85.9985 60.9088,86.3319 59,85.5C 57.9563,86.6226 57.2896,87.9559 57,89.5C 55.5421,88.2532 54.0421,88.2532 52.5,89.5C 47.2625,88.1915 42.0958,86.5248 37,84.5C 36.6667,84.8333 36.3333,85.1667 36,85.5C 33.6166,82.7272 30.7833,80.5605 27.5,79C 26.8333,77.6667 26.1667,76.3333 25.5,75C 22.9664,74.4837 20.7998,73.317 19,71.5C 18.5803,65.9729 17.4137,60.6396 15.5,55.5C 16.5,54.1667 17.5,52.8333 18.5,51.5C 16.3145,47.9728 16.3145,44.3061 18.5,40.5C 23.5438,33.6008 28.8772,26.9341 34.5,20.5C 36.0924,20.4173 37.7591,20.7506 39.5,21.5C 43.4346,20.2463 47.4346,19.2463 51.5,18.5C 53.0879,17.9904 54.2545,16.9904 55,15.5C 62.8685,18.8827 70.3685,22.8827 77.5,27.5C 79.8375,25.9893 80.5042,26.3227 79.5,28.5C 80.1667,29.8333 81.1667,30.8333 82.5,31.5C 83.4656,33.396 83.7989,35.396 83.5,37.5C 86.6829,37.929 89.0162,39.5957 90.5,42.5C 89.1903,47.6537 89.1903,52.8204 90.5,58C 90.2838,60.5068 89.2838,61.3401 87.5,60.5C 86.2612,62.0072 86.5946,63.1739 88.5,64C 87.1068,65.1711 86.2735,66.6711 86,68.5C 85.6667,67.5 85.3333,66.5 85,65.5C 82.1612,70.4675 79.1612,75.8008 76,81.5C 75.0138,80.8288 73.8471,80.8288 72.5,81.5 Z"/></g>
<g><path style="opacity:1" fill="#ffaba5" d="M 72.5,81.5 C 70.2459,82.4151 68.2459,83.7484 66.5,85.5C 65.8165,85.1373 65.1499,84.8039 64.5,84.5C 66.7741,83.2628 69.1074,81.9295 71.5,80.5C 72.1067,80.6236 72.44,80.9569 72.5,81.5 Z"/></g>
</svg>

Before

Width:  |  Height:  |  Size: 656 B

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>BinaryPath</key>
<string>DouShouQiModel.framework/DouShouQiModel</string>
<key>DebugSymbolsPath</key>
<string>dSYMs</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>DouShouQiModel.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>DouShouQiModel.framework/DouShouQiModel</string>
<key>DebugSymbolsPath</key>
<string>dSYMs</string>
<key>LibraryIdentifier</key>
<string>ios-arm64_x86_64-simulator</string>
<key>LibraryPath</key>
<string>DouShouQiModel.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>DouShouQiModel.framework/Versions/A/DouShouQiModel</string>
<key>DebugSymbolsPath</key>
<string>dSYMs</string>
<key>LibraryIdentifier</key>
<string>macos-arm64_x86_64</string>
<key>LibraryPath</key>
<string>DouShouQiModel.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>macos</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>
<key>XCFrameworkFormatVersion</key>
<string>1.0</string>
</dict>
</plist>

@ -1,311 +0,0 @@
#if 0
#elif defined(__arm64__) && __arm64__
// Generated by Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
#ifndef DOUSHOUQIMODEL_SWIFT_H
#define DOUSHOUQIMODEL_SWIFT_H
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"
#if !defined(__has_include)
# define __has_include(x) 0
#endif
#if !defined(__has_attribute)
# define __has_attribute(x) 0
#endif
#if !defined(__has_feature)
# define __has_feature(x) 0
#endif
#if !defined(__has_warning)
# define __has_warning(x) 0
#endif
#if __has_include(<swift/objc-prologue.h>)
# include <swift/objc-prologue.h>
#endif
#pragma clang diagnostic ignored "-Wauto-import"
#if defined(__OBJC__)
#include <Foundation/Foundation.h>
#endif
#if defined(__cplusplus)
#include <cstdint>
#include <cstddef>
#include <cstdbool>
#include <cstring>
#include <stdlib.h>
#include <new>
#include <type_traits>
#else
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include <string.h>
#endif
#if defined(__cplusplus)
#if defined(__arm64e__) && __has_include(<ptrauth.h>)
# include <ptrauth.h>
#else
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreserved-macro-identifier"
# ifndef __ptrauth_swift_value_witness_function_pointer
# define __ptrauth_swift_value_witness_function_pointer(x)
# endif
# ifndef __ptrauth_swift_class_method_pointer
# define __ptrauth_swift_class_method_pointer(x)
# endif
#pragma clang diagnostic pop
#endif
#endif
#if !defined(SWIFT_TYPEDEFS)
# define SWIFT_TYPEDEFS 1
# if __has_include(<uchar.h>)
# include <uchar.h>
# elif !defined(__cplusplus)
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
# endif
typedef float swift_float2 __attribute__((__ext_vector_type__(2)));
typedef float swift_float3 __attribute__((__ext_vector_type__(3)));
typedef float swift_float4 __attribute__((__ext_vector_type__(4)));
typedef double swift_double2 __attribute__((__ext_vector_type__(2)));
typedef double swift_double3 __attribute__((__ext_vector_type__(3)));
typedef double swift_double4 __attribute__((__ext_vector_type__(4)));
typedef int swift_int2 __attribute__((__ext_vector_type__(2)));
typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2)));
typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3)));
typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
#endif
#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if !defined(SWIFT_CLASS_PROPERTY)
# if __has_feature(objc_class_property)
# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
# else
# define SWIFT_CLASS_PROPERTY(...)
# endif
#endif
#if !defined(SWIFT_RUNTIME_NAME)
# if __has_attribute(objc_runtime_name)
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
# else
# define SWIFT_RUNTIME_NAME(X)
# endif
#endif
#if !defined(SWIFT_COMPILE_NAME)
# if __has_attribute(swift_name)
# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
# else
# define SWIFT_COMPILE_NAME(X)
# endif
#endif
#if !defined(SWIFT_METHOD_FAMILY)
# if __has_attribute(objc_method_family)
# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
# else
# define SWIFT_METHOD_FAMILY(X)
# endif
#endif
#if !defined(SWIFT_NOESCAPE)
# if __has_attribute(noescape)
# define SWIFT_NOESCAPE __attribute__((noescape))
# else
# define SWIFT_NOESCAPE
# endif
#endif
#if !defined(SWIFT_RELEASES_ARGUMENT)
# if __has_attribute(ns_consumed)
# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
# else
# define SWIFT_RELEASES_ARGUMENT
# endif
#endif
#if !defined(SWIFT_WARN_UNUSED_RESULT)
# if __has_attribute(warn_unused_result)
# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
# else
# define SWIFT_WARN_UNUSED_RESULT
# endif
#endif
#if !defined(SWIFT_NORETURN)
# if __has_attribute(noreturn)
# define SWIFT_NORETURN __attribute__((noreturn))
# else
# define SWIFT_NORETURN
# endif
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_ENUM_EXTRA)
# define SWIFT_ENUM_EXTRA
#endif
#if !defined(SWIFT_CLASS)
# if __has_attribute(objc_subclassing_restricted)
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_RESILIENT_CLASS)
# if __has_attribute(objc_class_stub)
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
# else
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
# endif
#endif
#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif
#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if __has_attribute(objc_designated_initializer)
# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
# define OBJC_DESIGNATED_INITIALIZER
# endif
#endif
#if !defined(SWIFT_ENUM_ATTR)
# if __has_attribute(enum_extensibility)
# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
# else
# define SWIFT_ENUM_ATTR(_extensibility)
# endif
#endif
#if !defined(SWIFT_ENUM)
# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# if __has_feature(generalized_swift_name)
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# else
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
# endif
#endif
#if !defined(SWIFT_UNAVAILABLE)
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
#endif
#if !defined(SWIFT_UNAVAILABLE_MSG)
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
#endif
#if !defined(SWIFT_AVAILABILITY)
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
#endif
#if !defined(SWIFT_WEAK_IMPORT)
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
#endif
#if !defined(SWIFT_DEPRECATED)
# define SWIFT_DEPRECATED __attribute__((deprecated))
#endif
#if !defined(SWIFT_DEPRECATED_MSG)
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
#endif
#if !defined(SWIFT_DEPRECATED_OBJC)
# if __has_feature(attribute_diagnose_if_objc)
# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
# else
# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
# endif
#endif
#if defined(__OBJC__)
#if !defined(IBSegueAction)
# define IBSegueAction
#endif
#endif
#if !defined(SWIFT_EXTERN)
# if defined(__cplusplus)
# define SWIFT_EXTERN extern "C"
# else
# define SWIFT_EXTERN extern
# endif
#endif
#if !defined(SWIFT_CALL)
# define SWIFT_CALL __attribute__((swiftcall))
#endif
#if !defined(SWIFT_INDIRECT_RESULT)
# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result))
#endif
#if !defined(SWIFT_CONTEXT)
# define SWIFT_CONTEXT __attribute__((swift_context))
#endif
#if !defined(SWIFT_ERROR_RESULT)
# define SWIFT_ERROR_RESULT __attribute__((swift_error_result))
#endif
#if defined(__cplusplus)
# define SWIFT_NOEXCEPT noexcept
#else
# define SWIFT_NOEXCEPT
#endif
#if !defined(SWIFT_C_INLINE_THUNK)
# if __has_attribute(always_inline)
# if __has_attribute(nodebug)
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug))
# else
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline))
# endif
# else
# define SWIFT_C_INLINE_THUNK inline
# endif
#endif
#if defined(_WIN32)
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport)
#endif
#else
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL
#endif
#endif
#if defined(__OBJC__)
#if __has_feature(objc_modules)
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
#endif
#endif
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
#if __has_warning("-Wpragma-clang-attribute")
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
#endif
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wnullability"
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"
#if __has_attribute(external_source_symbol)
# pragma push_macro("any")
# undef any
# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="DouShouQiModel",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
# pragma pop_macro("any")
#endif
#if defined(__OBJC__)
#endif
#if __has_attribute(external_source_symbol)
# pragma clang attribute pop
#endif
#if defined(__cplusplus)
#endif
#pragma clang diagnostic pop
#endif
#else
#error unsupported Swift architecture
#endif

@ -1,18 +0,0 @@
//
// DouShouQiModel.h
// DouShouQiModel
//
// Created by Marc Chevaldonné on 14/05/2024.
//
#import <Foundation/Foundation.h>
//! Project version number for DouShouQiModel.
FOUNDATION_EXPORT double DouShouQiModelVersionNumber;
//! Project version string for DouShouQiModel.
FOUNDATION_EXPORT const unsigned char DouShouQiModelVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <DouShouQiModel/PublicHeader.h>

@ -1,266 +0,0 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
// swift-module-flags: -target arm64-apple-ios16.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name DouShouQiModel
// swift-module-flags-ignorable: -enable-bare-slash-regex
@_exported import DouShouQiModel
import Foundation
import Swift
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
public enum Result : Swift.Equatable {
case notFinished
case even
case winner(winner: DouShouQiModel.Owner, reason: DouShouQiModel.WinningReason)
public static func == (a: DouShouQiModel.Result, b: DouShouQiModel.Result) -> Swift.Bool
}
public enum WinningReason {
case denReached, noMorePieces, tooManyOccurences, noMovesLeft
public static func == (a: DouShouQiModel.WinningReason, b: DouShouQiModel.WinningReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
public enum BoardResult : Swift.Equatable {
case unknown
case ok(piece: DouShouQiModel.Piece?)
case failed(reason: DouShouQiModel.BoardFailingReason)
public static func == (a: DouShouQiModel.BoardResult, b: DouShouQiModel.BoardResult) -> Swift.Bool
}
public enum BoardFailingReason {
case unknown, outOfBounds, cellNotEmpty, cellEmpty
public static func == (a: DouShouQiModel.BoardFailingReason, b: DouShouQiModel.BoardFailingReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class HumanPlayer : DouShouQiModel.Player {
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner, andInputMethod input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
public func changeInput(input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(_ move: DouShouQiModel.Move?) async throws
#endif
@objc deinit
}
public struct ClassicRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public struct Cell : Swift.CustomStringConvertible, Swift.Equatable {
public var description: Swift.String {
get
}
public let cellType: DouShouQiModel.CellType
public let initialOwner: DouShouQiModel.Owner
public var piece: DouShouQiModel.Piece?
public init(ofType cellType: DouShouQiModel.CellType, ownedBy initialOwner: DouShouQiModel.Owner = .noOne, withPiece piece: DouShouQiModel.Piece? = nil)
public static func == (a: DouShouQiModel.Cell, b: DouShouQiModel.Cell) -> Swift.Bool
}
public struct VerySimpleRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public protocol Rules {
static func createBoard() -> DouShouQiModel.Board
static func checkBoard(_ board: DouShouQiModel.Board) throws
func getNextPlayer() -> DouShouQiModel.Owner
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
func isMoveValid(onBoard: DouShouQiModel.Board, fromRow: Swift.Int, andFromColumn: Swift.Int, toRow: Swift.Int, andToColumn: Swift.Int) -> Swift.Bool
func isMoveValid(onBoard: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
func isGameOver(withBoard: DouShouQiModel.Board, andLastRowPlayed: Swift.Int, andLastColumnPlayer: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
var occurences: [DouShouQiModel.Board : Swift.Int] { get }
var historic: [DouShouQiModel.Move] { get }
}
public class Player {
final public let name: Swift.String
final public let id: DouShouQiModel.Owner
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addPlayedCallbacksListener(_ listener: @escaping (DouShouQiModel.Move?, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func notifyPlayed(withMove move: DouShouQiModel.Move?, andPlayer player: DouShouQiModel.Player) async throws
#endif
@objc deinit
}
public enum GameError : Swift.Error {
case invalidMove, nextPlayerError, badPlayerId(message: Swift.String), invalidRules, invalidPlayer, invalidGame, invalidBoard
}
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.IAPlayer {
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public enum CellType : Swift.CaseIterable {
case unknown, jungle, water, trap, den
public static func == (a: DouShouQiModel.CellType, b: DouShouQiModel.CellType) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public typealias AllCases = [DouShouQiModel.CellType]
public static var allCases: [DouShouQiModel.CellType] {
get
}
public var hashValue: Swift.Int {
get
}
}
public struct Board : Swift.Hashable {
public func hash(into hasher: inout Swift.Hasher)
public let nbRows: Swift.Int
public let nbColumns: Swift.Int
public var grid: [[DouShouQiModel.Cell]] {
get
}
public init?(withGrid grid: [[DouShouQiModel.Cell]])
public func countPieces(of owner: DouShouQiModel.Owner) -> Swift.Int
public func countPieces() -> (nbOfPiecesOfPlayer1: Swift.Int, nbOfPiecesOfPlayer2: Swift.Int)
public mutating func insert(piece: DouShouQiModel.Piece, atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public mutating func removePiece(atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public static func == (a: DouShouQiModel.Board, b: DouShouQiModel.Board) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public struct Piece : Swift.CustomStringConvertible, Swift.Hashable {
public var description: Swift.String {
get
}
public let owner: DouShouQiModel.Owner
public let animal: DouShouQiModel.Animal
public init(withOwner owner: DouShouQiModel.Owner, andAnimal animal: DouShouQiModel.Animal)
public func hash(into hasher: inout Swift.Hasher)
public static func == (a: DouShouQiModel.Piece, b: DouShouQiModel.Piece) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public enum InvalidBoardError : Swift.Error, Swift.Equatable {
case unknownError
case badDimensions(nbRows: Swift.Int, nbColumns: Swift.Int)
case badCellType(cellType: DouShouQiModel.CellType, row: Swift.Int, column: Swift.Int)
case multipleOccurenceOfSamePiece(piece: DouShouQiModel.Piece)
case pieceWithNoOwner(piece: DouShouQiModel.Piece)
case pieceNotAllowedOnThisCell(piece: DouShouQiModel.Piece, cell: DouShouQiModel.Cell)
public static func == (a: DouShouQiModel.InvalidBoardError, b: DouShouQiModel.InvalidBoardError) -> Swift.Bool
}
public enum Owner {
case noOne, player1, player2
public var simpleDescription: Swift.String {
get
}
public static func == (a: DouShouQiModel.Owner, b: DouShouQiModel.Owner) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class IAPlayer : DouShouQiModel.Player {
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public struct Move : Swift.CustomStringConvertible, Swift.Equatable {
public let owner: DouShouQiModel.Owner
public let rowOrigin: Swift.Int
public let columnOrigin: Swift.Int
public let rowDestination: Swift.Int
public let columnDestination: Swift.Int
public init(of owner: DouShouQiModel.Owner, fromRow rowOrigin: Swift.Int, andFromColumn colOrigin: Swift.Int, toRow rowDest: Swift.Int, andToColumn colDest: Swift.Int)
public var description: Swift.String {
get
}
public static func == (a: DouShouQiModel.Move, b: DouShouQiModel.Move) -> Swift.Bool
}
public enum Animal : Swift.Int {
case rat, cat, dog, wolf, leopard, tiger, lion, elephant
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
public class Game {
public var board: DouShouQiModel.Board {
get
}
public var rules: any DouShouQiModel.Rules {
get
}
final public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
public init(withRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public init(withBoard board: DouShouQiModel.Board, andRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
#endif
public func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addPieceRemovedListener(_ listener: @escaping (Swift.Int, Swift.Int, DouShouQiModel.Piece) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func onPlayed(with move: DouShouQiModel.Move?, from player: DouShouQiModel.Player) async throws
#endif
public var isOver: Swift.Bool {
get
}
#if compiler(>=5.3) && $AsyncAwait
public func start() async throws
#endif
@objc deinit
}
extension DouShouQiModel.WinningReason : Swift.Equatable {}
extension DouShouQiModel.WinningReason : Swift.Hashable {}
extension DouShouQiModel.BoardFailingReason : Swift.Equatable {}
extension DouShouQiModel.BoardFailingReason : Swift.Hashable {}
extension DouShouQiModel.CellType : Swift.Equatable {}
extension DouShouQiModel.CellType : Swift.Hashable {}
extension DouShouQiModel.Owner : Swift.Equatable {}
extension DouShouQiModel.Owner : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.Equatable {}
extension DouShouQiModel.Animal : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.RawRepresentable {}

@ -1,266 +0,0 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
// swift-module-flags: -target arm64-apple-ios16.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name DouShouQiModel
// swift-module-flags-ignorable: -enable-bare-slash-regex
@_exported import DouShouQiModel
import Foundation
import Swift
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
public enum Result : Swift.Equatable {
case notFinished
case even
case winner(winner: DouShouQiModel.Owner, reason: DouShouQiModel.WinningReason)
public static func == (a: DouShouQiModel.Result, b: DouShouQiModel.Result) -> Swift.Bool
}
public enum WinningReason {
case denReached, noMorePieces, tooManyOccurences, noMovesLeft
public static func == (a: DouShouQiModel.WinningReason, b: DouShouQiModel.WinningReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
public enum BoardResult : Swift.Equatable {
case unknown
case ok(piece: DouShouQiModel.Piece?)
case failed(reason: DouShouQiModel.BoardFailingReason)
public static func == (a: DouShouQiModel.BoardResult, b: DouShouQiModel.BoardResult) -> Swift.Bool
}
public enum BoardFailingReason {
case unknown, outOfBounds, cellNotEmpty, cellEmpty
public static func == (a: DouShouQiModel.BoardFailingReason, b: DouShouQiModel.BoardFailingReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class HumanPlayer : DouShouQiModel.Player {
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner, andInputMethod input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
public func changeInput(input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(_ move: DouShouQiModel.Move?) async throws
#endif
@objc deinit
}
public struct ClassicRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public struct Cell : Swift.CustomStringConvertible, Swift.Equatable {
public var description: Swift.String {
get
}
public let cellType: DouShouQiModel.CellType
public let initialOwner: DouShouQiModel.Owner
public var piece: DouShouQiModel.Piece?
public init(ofType cellType: DouShouQiModel.CellType, ownedBy initialOwner: DouShouQiModel.Owner = .noOne, withPiece piece: DouShouQiModel.Piece? = nil)
public static func == (a: DouShouQiModel.Cell, b: DouShouQiModel.Cell) -> Swift.Bool
}
public struct VerySimpleRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public protocol Rules {
static func createBoard() -> DouShouQiModel.Board
static func checkBoard(_ board: DouShouQiModel.Board) throws
func getNextPlayer() -> DouShouQiModel.Owner
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
func isMoveValid(onBoard: DouShouQiModel.Board, fromRow: Swift.Int, andFromColumn: Swift.Int, toRow: Swift.Int, andToColumn: Swift.Int) -> Swift.Bool
func isMoveValid(onBoard: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
func isGameOver(withBoard: DouShouQiModel.Board, andLastRowPlayed: Swift.Int, andLastColumnPlayer: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
var occurences: [DouShouQiModel.Board : Swift.Int] { get }
var historic: [DouShouQiModel.Move] { get }
}
public class Player {
final public let name: Swift.String
final public let id: DouShouQiModel.Owner
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addPlayedCallbacksListener(_ listener: @escaping (DouShouQiModel.Move?, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func notifyPlayed(withMove move: DouShouQiModel.Move?, andPlayer player: DouShouQiModel.Player) async throws
#endif
@objc deinit
}
public enum GameError : Swift.Error {
case invalidMove, nextPlayerError, badPlayerId(message: Swift.String), invalidRules, invalidPlayer, invalidGame, invalidBoard
}
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.IAPlayer {
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public enum CellType : Swift.CaseIterable {
case unknown, jungle, water, trap, den
public static func == (a: DouShouQiModel.CellType, b: DouShouQiModel.CellType) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public typealias AllCases = [DouShouQiModel.CellType]
public static var allCases: [DouShouQiModel.CellType] {
get
}
public var hashValue: Swift.Int {
get
}
}
public struct Board : Swift.Hashable {
public func hash(into hasher: inout Swift.Hasher)
public let nbRows: Swift.Int
public let nbColumns: Swift.Int
public var grid: [[DouShouQiModel.Cell]] {
get
}
public init?(withGrid grid: [[DouShouQiModel.Cell]])
public func countPieces(of owner: DouShouQiModel.Owner) -> Swift.Int
public func countPieces() -> (nbOfPiecesOfPlayer1: Swift.Int, nbOfPiecesOfPlayer2: Swift.Int)
public mutating func insert(piece: DouShouQiModel.Piece, atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public mutating func removePiece(atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public static func == (a: DouShouQiModel.Board, b: DouShouQiModel.Board) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public struct Piece : Swift.CustomStringConvertible, Swift.Hashable {
public var description: Swift.String {
get
}
public let owner: DouShouQiModel.Owner
public let animal: DouShouQiModel.Animal
public init(withOwner owner: DouShouQiModel.Owner, andAnimal animal: DouShouQiModel.Animal)
public func hash(into hasher: inout Swift.Hasher)
public static func == (a: DouShouQiModel.Piece, b: DouShouQiModel.Piece) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public enum InvalidBoardError : Swift.Error, Swift.Equatable {
case unknownError
case badDimensions(nbRows: Swift.Int, nbColumns: Swift.Int)
case badCellType(cellType: DouShouQiModel.CellType, row: Swift.Int, column: Swift.Int)
case multipleOccurenceOfSamePiece(piece: DouShouQiModel.Piece)
case pieceWithNoOwner(piece: DouShouQiModel.Piece)
case pieceNotAllowedOnThisCell(piece: DouShouQiModel.Piece, cell: DouShouQiModel.Cell)
public static func == (a: DouShouQiModel.InvalidBoardError, b: DouShouQiModel.InvalidBoardError) -> Swift.Bool
}
public enum Owner {
case noOne, player1, player2
public var simpleDescription: Swift.String {
get
}
public static func == (a: DouShouQiModel.Owner, b: DouShouQiModel.Owner) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class IAPlayer : DouShouQiModel.Player {
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public struct Move : Swift.CustomStringConvertible, Swift.Equatable {
public let owner: DouShouQiModel.Owner
public let rowOrigin: Swift.Int
public let columnOrigin: Swift.Int
public let rowDestination: Swift.Int
public let columnDestination: Swift.Int
public init(of owner: DouShouQiModel.Owner, fromRow rowOrigin: Swift.Int, andFromColumn colOrigin: Swift.Int, toRow rowDest: Swift.Int, andToColumn colDest: Swift.Int)
public var description: Swift.String {
get
}
public static func == (a: DouShouQiModel.Move, b: DouShouQiModel.Move) -> Swift.Bool
}
public enum Animal : Swift.Int {
case rat, cat, dog, wolf, leopard, tiger, lion, elephant
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
public class Game {
public var board: DouShouQiModel.Board {
get
}
public var rules: any DouShouQiModel.Rules {
get
}
final public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
public init(withRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public init(withBoard board: DouShouQiModel.Board, andRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
#endif
public func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addPieceRemovedListener(_ listener: @escaping (Swift.Int, Swift.Int, DouShouQiModel.Piece) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func onPlayed(with move: DouShouQiModel.Move?, from player: DouShouQiModel.Player) async throws
#endif
public var isOver: Swift.Bool {
get
}
#if compiler(>=5.3) && $AsyncAwait
public func start() async throws
#endif
@objc deinit
}
extension DouShouQiModel.WinningReason : Swift.Equatable {}
extension DouShouQiModel.WinningReason : Swift.Hashable {}
extension DouShouQiModel.BoardFailingReason : Swift.Equatable {}
extension DouShouQiModel.BoardFailingReason : Swift.Hashable {}
extension DouShouQiModel.CellType : Swift.Equatable {}
extension DouShouQiModel.CellType : Swift.Hashable {}
extension DouShouQiModel.Owner : Swift.Equatable {}
extension DouShouQiModel.Owner : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.Equatable {}
extension DouShouQiModel.Animal : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.RawRepresentable {}

@ -1,11 +0,0 @@
framework module DouShouQiModel {
umbrella header "DouShouQiModel.h"
export *
module * { export * }
}
module DouShouQiModel.Swift {
header "DouShouQiModel-Swift.h"
requires objc
}

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleIdentifier</key>
<string>com.apple.xcode.dsym.fr.uca.iut.DouShouQiModel</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>dSYM</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>

@ -1,504 +0,0 @@
---
triple: 'arm64-apple-darwin'
binary-path: '/Users/marcchevaldonne/Library/Developer/Xcode/DerivedData/DouShouQiModel-bzzvovsrfmbhuydeirorjmljgtyf/Build/Intermediates.noindex/ArchiveIntermediates/DouShouQiModel/InstallationBuildProductsLocation/Library/Frameworks/DouShouQiModel.framework/DouShouQiModel'
relocations:
- { offsetInCU: 0x34, offset: 0x2E6D2, size: 0x8, addend: 0x0, symName: _DouShouQiModelVersionString, symObjAddr: 0x0, symBinAddr: 0x140B0, symSize: 0x0 }
- { offsetInCU: 0x69, offset: 0x2E707, size: 0x8, addend: 0x0, symName: _DouShouQiModelVersionNumber, symObjAddr: 0x38, symBinAddr: 0x140E8, symSize: 0x0 }
- { offsetInCU: 0x27, offset: 0x2E744, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x4000, symSize: 0x4 }
- { offsetInCU: 0x4B, offset: 0x2E768, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x4000, symSize: 0x4 }
- { offsetInCU: 0x6E, offset: 0x2E78B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0x4018, symSize: 0x4 }
- { offsetInCU: 0x8E, offset: 0x2E7AB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0x4018, symSize: 0x4 }
- { offsetInCU: 0x9F, offset: 0x2E7BC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x148, symBinAddr: 0x4148, symSize: 0x68 }
- { offsetInCU: 0xDD, offset: 0x2E7FA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO2eeoiySbAC_ACtFZ', symObjAddr: 0x4, symBinAddr: 0x4004, symSize: 0x14 }
- { offsetInCU: 0x110, offset: 0x2E82D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO4hash4intoys6HasherVz_tF', symObjAddr: 0x1C, symBinAddr: 0x401C, symSize: 0x28 }
- { offsetInCU: 0x1A6, offset: 0x2E8C3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO9hashValueSivg', symObjAddr: 0x44, symBinAddr: 0x4044, symSize: 0x44 }
- { offsetInCU: 0x2A0, offset: 0x2E9BD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0x4088, symSize: 0x14 }
- { offsetInCU: 0x2C0, offset: 0x2E9DD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0x4088, symSize: 0x14 }
- { offsetInCU: 0x300, offset: 0x2EA1D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH9hashValueSivgTW', symObjAddr: 0x9C, symBinAddr: 0x409C, symSize: 0x44 }
- { offsetInCU: 0x3E3, offset: 0x2EB00, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x40E0, symSize: 0x28 }
- { offsetInCU: 0x46C, offset: 0x2EB89, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASQWb', symObjAddr: 0x1B0, symBinAddr: 0x41B0, symSize: 0x4 }
- { offsetInCU: 0x480, offset: 0x2EB9D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOACSQAAWl', symObjAddr: 0x1B4, symBinAddr: 0x41B4, symSize: 0x44 }
- { offsetInCU: 0x494, offset: 0x2EBB1, size: 0x8, addend: 0x0, symName: ___swift_memcpy2_1, symObjAddr: 0x1F8, symBinAddr: 0x41F8, symSize: 0xC }
- { offsetInCU: 0x4A8, offset: 0x2EBC5, size: 0x8, addend: 0x0, symName: ___swift_noop_void_return, symObjAddr: 0x204, symBinAddr: 0x4204, symSize: 0x4 }
- { offsetInCU: 0x4BC, offset: 0x2EBD9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwet', symObjAddr: 0x208, symBinAddr: 0x4208, symSize: 0xAC }
- { offsetInCU: 0x4D0, offset: 0x2EBED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwst', symObjAddr: 0x2B4, symBinAddr: 0x42B4, symSize: 0xC4 }
- { offsetInCU: 0x4E4, offset: 0x2EC01, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwug', symObjAddr: 0x378, symBinAddr: 0x4378, symSize: 0x14 }
- { offsetInCU: 0x4F8, offset: 0x2EC15, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwup', symObjAddr: 0x38C, symBinAddr: 0x438C, symSize: 0x4 }
- { offsetInCU: 0x50C, offset: 0x2EC29, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwui', symObjAddr: 0x390, symBinAddr: 0x4390, symSize: 0x24 }
- { offsetInCU: 0x520, offset: 0x2EC3D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOMa', symObjAddr: 0x3B4, symBinAddr: 0x43B4, symSize: 0x10 }
- { offsetInCU: 0x534, offset: 0x2EC51, size: 0x8, addend: 0x0, symName: ___swift_memcpy1_1, symObjAddr: 0x3C4, symBinAddr: 0x43C4, symSize: 0xC }
- { offsetInCU: 0x548, offset: 0x2EC65, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwet', symObjAddr: 0x3D0, symBinAddr: 0x43D0, symSize: 0x90 }
- { offsetInCU: 0x55C, offset: 0x2EC79, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwst', symObjAddr: 0x460, symBinAddr: 0x4460, symSize: 0xBC }
- { offsetInCU: 0x570, offset: 0x2EC8D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwug', symObjAddr: 0x51C, symBinAddr: 0x451C, symSize: 0x8 }
- { offsetInCU: 0x584, offset: 0x2ECA1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwup', symObjAddr: 0x524, symBinAddr: 0x4524, symSize: 0x4 }
- { offsetInCU: 0x598, offset: 0x2ECB5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwui', symObjAddr: 0x528, symBinAddr: 0x4528, symSize: 0x8 }
- { offsetInCU: 0x5AC, offset: 0x2ECC9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOMa', symObjAddr: 0x530, symBinAddr: 0x4530, symSize: 0x10 }
- { offsetInCU: 0x626, offset: 0x2ED43, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x108, symBinAddr: 0x4108, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x2EE86, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x4540, symSize: 0x4 }
- { offsetInCU: 0x4B, offset: 0x2EEAA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x4540, symSize: 0x4 }
- { offsetInCU: 0x6E, offset: 0x2EECD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0x4558, symSize: 0x4 }
- { offsetInCU: 0x8E, offset: 0x2EEED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0x4558, symSize: 0x4 }
- { offsetInCU: 0x9F, offset: 0x2EEFE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x148, symBinAddr: 0x4688, symSize: 0x7C }
- { offsetInCU: 0xF5, offset: 0x2EF54, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO2eeoiySbAC_ACtFZ', symObjAddr: 0x4, symBinAddr: 0x4544, symSize: 0x14 }
- { offsetInCU: 0x128, offset: 0x2EF87, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO4hash4intoys6HasherVz_tF', symObjAddr: 0x1C, symBinAddr: 0x455C, symSize: 0x28 }
- { offsetInCU: 0x1BE, offset: 0x2F01D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO9hashValueSivg', symObjAddr: 0x44, symBinAddr: 0x4584, symSize: 0x44 }
- { offsetInCU: 0x2B8, offset: 0x2F117, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0x45C8, symSize: 0x14 }
- { offsetInCU: 0x2D8, offset: 0x2F137, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0x45C8, symSize: 0x14 }
- { offsetInCU: 0x318, offset: 0x2F177, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH9hashValueSivgTW', symObjAddr: 0x9C, symBinAddr: 0x45DC, symSize: 0x44 }
- { offsetInCU: 0x3FB, offset: 0x2F25A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x4620, symSize: 0x28 }
- { offsetInCU: 0x484, offset: 0x2F2E3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASQWb', symObjAddr: 0x1C4, symBinAddr: 0x4704, symSize: 0x4 }
- { offsetInCU: 0x498, offset: 0x2F2F7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOACSQAAWl', symObjAddr: 0x1C8, symBinAddr: 0x4708, symSize: 0x44 }
- { offsetInCU: 0x4AC, offset: 0x2F30B, size: 0x8, addend: 0x0, symName: ___swift_memcpy3_1, symObjAddr: 0x20C, symBinAddr: 0x474C, symSize: 0x14 }
- { offsetInCU: 0x4C0, offset: 0x2F31F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwet', symObjAddr: 0x224, symBinAddr: 0x4760, symSize: 0x74 }
- { offsetInCU: 0x4D4, offset: 0x2F333, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwst', symObjAddr: 0x298, symBinAddr: 0x47D4, symSize: 0x8C }
- { offsetInCU: 0x4E8, offset: 0x2F347, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwug', symObjAddr: 0x324, symBinAddr: 0x4860, symSize: 0x18 }
- { offsetInCU: 0x4FC, offset: 0x2F35B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwup', symObjAddr: 0x33C, symBinAddr: 0x4878, symSize: 0x4 }
- { offsetInCU: 0x510, offset: 0x2F36F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwui', symObjAddr: 0x340, symBinAddr: 0x487C, symSize: 0x18 }
- { offsetInCU: 0x524, offset: 0x2F383, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOMa', symObjAddr: 0x358, symBinAddr: 0x4894, symSize: 0x10 }
- { offsetInCU: 0x538, offset: 0x2F397, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwet', symObjAddr: 0x374, symBinAddr: 0x48A4, symSize: 0x90 }
- { offsetInCU: 0x54C, offset: 0x2F3AB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwst', symObjAddr: 0x404, symBinAddr: 0x4934, symSize: 0xBC }
- { offsetInCU: 0x560, offset: 0x2F3BF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwug', symObjAddr: 0x4C0, symBinAddr: 0x49F0, symSize: 0x8 }
- { offsetInCU: 0x574, offset: 0x2F3D3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwup', symObjAddr: 0x4C8, symBinAddr: 0x49F8, symSize: 0x4 }
- { offsetInCU: 0x588, offset: 0x2F3E7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwui', symObjAddr: 0x4CC, symBinAddr: 0x49FC, symSize: 0x8 }
- { offsetInCU: 0x59C, offset: 0x2F3FB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOMa', symObjAddr: 0x4D4, symBinAddr: 0x4A04, symSize: 0x10 }
- { offsetInCU: 0x5FA, offset: 0x2F459, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x108, symBinAddr: 0x4648, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x2F588, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfC', symObjAddr: 0x0, symBinAddr: 0x4A14, symSize: 0xD0 }
- { offsetInCU: 0x99, offset: 0x2F5FA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfC', symObjAddr: 0x0, symBinAddr: 0x4A14, symSize: 0xD0 }
- { offsetInCU: 0xEE, offset: 0x2F64F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfc', symObjAddr: 0xD0, symBinAddr: 0x4AE4, symSize: 0xB0 }
- { offsetInCU: 0x189, offset: 0x2F6EA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x190, symBinAddr: 0x4BA4, symSize: 0xA0 }
- { offsetInCU: 0x1DE, offset: 0x2F73F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x230, symBinAddr: 0x4C44, symSize: 0x70 }
- { offsetInCU: 0x22D, offset: 0x2F78E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x2A0, symBinAddr: 0x4CB4, symSize: 0xC }
- { offsetInCU: 0x2A9, offset: 0x2F80A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC11changeInput5inputyAA4MoveVSgACc_tF', symObjAddr: 0x2AC, symBinAddr: 0x4CC0, symSize: 0x38 }
- { offsetInCU: 0x310, offset: 0x2F871, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKF', symObjAddr: 0x2E4, symBinAddr: 0x4CF8, symSize: 0x2C }
- { offsetInCU: 0x384, offset: 0x2F8E5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY0_', symObjAddr: 0x310, symBinAddr: 0x4D24, symSize: 0x108 }
- { offsetInCU: 0x507, offset: 0x2FA68, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTQ1_', symObjAddr: 0x418, symBinAddr: 0x4E2C, symSize: 0x70 }
- { offsetInCU: 0x5BF, offset: 0x2FB20, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY2_', symObjAddr: 0x488, symBinAddr: 0x4E9C, symSize: 0x100 }
- { offsetInCU: 0x6AE, offset: 0x2FC0F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY3_', symObjAddr: 0x588, symBinAddr: 0x4F9C, symSize: 0x40 }
- { offsetInCU: 0x70C, offset: 0x2FC6D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfd', symObjAddr: 0x5D0, symBinAddr: 0x4FE4, symSize: 0x2C }
- { offsetInCU: 0x75D, offset: 0x2FCBE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfD', symObjAddr: 0x5FC, symBinAddr: 0x5010, symSize: 0x34 }
- { offsetInCU: 0x87E, offset: 0x2FDDF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCAA4MoveVSgIeggr_SgWOe', symObjAddr: 0x180, symBinAddr: 0x4B94, symSize: 0x10 }
- { offsetInCU: 0x92C, offset: 0x2FE8D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfE', symObjAddr: 0x5C8, symBinAddr: 0x4FDC, symSize: 0x8 }
- { offsetInCU: 0x959, offset: 0x2FEBA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCMa', symObjAddr: 0x630, symBinAddr: 0x5044, symSize: 0x20 }
- { offsetInCU: 0x4F, offset: 0x30059, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11initialGridSaySayAA4CellVGGvpZ', symObjAddr: 0x299B0, symBinAddr: 0x1DB40, symSize: 0x0 }
- { offsetInCU: 0x69, offset: 0x30073, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV6pieces33_DFC7A53241A8EF79AF2B79A48A65C265LLShyAA5PieceVGvpZ', symObjAddr: 0x6D30, symBinAddr: 0x1C720, symSize: 0x0 }
- { offsetInCU: 0xD7, offset: 0x300E1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZ', symObjAddr: 0x6D38, symBinAddr: 0x1C728, symSize: 0x0 }
- { offsetInCU: 0xF1, offset: 0x300FB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15iteratingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardV_S2itKcGvpZ', symObjAddr: 0x6D40, symBinAddr: 0x1C730, symSize: 0x0 }
- { offsetInCU: 0x10B, offset: 0x30115, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12endingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZ', symObjAddr: 0x6D48, symBinAddr: 0x1C738, symSize: 0x0 }
- { offsetInCU: 0x125, offset: 0x3012F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16placesByCellTypeSDyAA0iJ0OSaySi3row_Si3coltGGvpZ', symObjAddr: 0x299B8, symBinAddr: 0x1DB48, symSize: 0x0 }
- { offsetInCU: 0x284, offset: 0x3028E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0x5130, symSize: 0x2DC }
- { offsetInCU: 0xA99, offset: 0x30AA3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11createBoardAA0H0VyFZ', symObjAddr: 0x2DC, symBinAddr: 0x540C, symSize: 0x78 }
- { offsetInCU: 0xAD7, offset: 0x30AE1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10checkBoardyyAA0H0VKFZ', symObjAddr: 0x354, symBinAddr: 0x5484, symSize: 0x14 }
- { offsetInCU: 0xB01, offset: 0x30B0B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZfiyAGcfU_', symObjAddr: 0x3AC, symBinAddr: 0x54DC, symSize: 0x30 }
- { offsetInCU: 0xB41, offset: 0x30B4B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZfiyAGcfU0_', symObjAddr: 0x3DC, symBinAddr: 0x550C, symSize: 0x78 }
- { offsetInCU: 0xB93, offset: 0x30B9D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVACycfC', symObjAddr: 0x6A8, symBinAddr: 0x57D8, symSize: 0x30 }
- { offsetInCU: 0xBD8, offset: 0x30BE2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10occurences8historicACSDyAA5BoardVSiG_SayAA4MoveVGtcfC', symObjAddr: 0x6D8, symBinAddr: 0x5808, symSize: 0x54 }
- { offsetInCU: 0xC3D, offset: 0x30C47, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV19findAuthorizedMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL5boardSayAA4MoveVGAA5BoardV_tF', symObjAddr: 0x72C, symBinAddr: 0x585C, symSize: 0x458 }
- { offsetInCU: 0x15D4, offset: 0x315DE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12findRatMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0xB84, symBinAddr: 0x5CB4, symSize: 0x62C }
- { offsetInCU: 0x1FE8, offset: 0x31FF2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV17findElephantMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x11B0, symBinAddr: 0x62E0, symSize: 0x5F8 }
- { offsetInCU: 0x295A, offset: 0x32964, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16findDefaultMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x17A8, symBinAddr: 0x68D8, symSize: 0x6C4 }
- { offsetInCU: 0x340F, offset: 0x33419, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV21findTigerAndLionMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x1E6C, symBinAddr: 0x6F9C, symSize: 0x44C }
- { offsetInCU: 0x3A6C, offset: 0x33A76, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV20findDirectNeighbours33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x22B8, symBinAddr: 0x73E8, symSize: 0x300 }
- { offsetInCU: 0x3FE8, offset: 0x33FF2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV26findTigerAndLionNeighbours33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x25B8, symBinAddr: 0x76E8, symSize: 0x56C }
- { offsetInCU: 0x491C, offset: 0x34926, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtF', symObjAddr: 0x2B24, symBinAddr: 0x7C54, symSize: 0x12C }
- { offsetInCU: 0x4AEC, offset: 0x34AF6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itF', symObjAddr: 0x2C50, symBinAddr: 0x7D80, symSize: 0x140 }
- { offsetInCU: 0x4D56, offset: 0x34D60, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11isMoveValid7onBoard7fromRow13andFromColumn02toM00n2ToP0SbAA0K0V_S4itF', symObjAddr: 0x2D90, symBinAddr: 0x7EC0, symSize: 0xA0 }
- { offsetInCU: 0x4E40, offset: 0x34E4A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11isMoveValid7onBoard04withH0SbAA0K0V_AA0H0VtF', symObjAddr: 0x2E30, symBinAddr: 0x7F60, symSize: 0x104 }
- { offsetInCU: 0x50CF, offset: 0x350D9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV13getNextPlayerAA5OwnerOyF', symObjAddr: 0x2F34, symBinAddr: 0x8064, symSize: 0x3C }
- { offsetInCU: 0x51E0, offset: 0x351EA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10isGameOver9withBoard16andLastRowPlayed0lM12ColumnPlayerSb_AA6ResultOtAA0K0V_S2itF', symObjAddr: 0x2F70, symBinAddr: 0x80A0, symSize: 0x188 }
- { offsetInCU: 0x537E, offset: 0x35388, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10playedMove_15onStartingBoard012andResultingK0yAA0H0V_AA0K0VAJtKF', symObjAddr: 0x30F8, symBinAddr: 0x8228, symSize: 0x424 }
- { offsetInCU: 0x5879, offset: 0x35883, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10occurencesSDyAA5BoardVSiGvg', symObjAddr: 0x351C, symBinAddr: 0x864C, symSize: 0x8 }
- { offsetInCU: 0x588D, offset: 0x35897, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8historicSayAA4MoveVGvg', symObjAddr: 0x3524, symBinAddr: 0x8654, symSize: 0x8 }
- { offsetInCU: 0x58BF, offset: 0x358C9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11createBoardAA0H0VyFZTW', symObjAddr: 0x352C, symBinAddr: 0x865C, symSize: 0x78 }
- { offsetInCU: 0x590C, offset: 0x35916, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10checkBoardyyAA0H0VKFZTW', symObjAddr: 0x35A4, symBinAddr: 0x86D4, symSize: 0x14 }
- { offsetInCU: 0x5944, offset: 0x3594E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP13getNextPlayerAA5OwnerOyFTW', symObjAddr: 0x35B8, symBinAddr: 0x86E8, symSize: 0x4 }
- { offsetInCU: 0x5960, offset: 0x3596A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtFTW', symObjAddr: 0x35BC, symBinAddr: 0x86EC, symSize: 0x14 }
- { offsetInCU: 0x597C, offset: 0x35986, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itFTW', symObjAddr: 0x35D0, symBinAddr: 0x8700, symSize: 0x14 }
- { offsetInCU: 0x5998, offset: 0x359A2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11isMoveValid7onBoard7fromRow13andFromColumn02toM00n2ToP0SbAA0K0V_S4itFTW', symObjAddr: 0x35E4, symBinAddr: 0x8714, symSize: 0x4 }
- { offsetInCU: 0x59B4, offset: 0x359BE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11isMoveValid7onBoard04withH0SbAA0K0V_AA0H0VtFTW', symObjAddr: 0x35E8, symBinAddr: 0x8718, symSize: 0x4 }
- { offsetInCU: 0x59D0, offset: 0x359DA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10isGameOver9withBoard16andLastRowPlayed0lM12ColumnPlayerSb_AA6ResultOtAA0K0V_S2itFTW', symObjAddr: 0x35EC, symBinAddr: 0x871C, symSize: 0x4 }
- { offsetInCU: 0x59EC, offset: 0x359F6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10playedMove_15onStartingBoard012andResultingK0yAA0H0V_AA0K0VALtKFTW', symObjAddr: 0x35F0, symBinAddr: 0x8720, symSize: 0x14 }
- { offsetInCU: 0x5A21, offset: 0x35A2B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0x3604, symBinAddr: 0x8734, symSize: 0x8 }
- { offsetInCU: 0x5A41, offset: 0x35A4B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0x3604, symBinAddr: 0x8734, symSize: 0x8 }
- { offsetInCU: 0x5A66, offset: 0x35A70, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0x360C, symBinAddr: 0x873C, symSize: 0x8 }
- { offsetInCU: 0x5A86, offset: 0x35A90, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0x360C, symBinAddr: 0x873C, symSize: 0x8 }
- { offsetInCU: 0x5A99, offset: 0x35AA3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10checkBoardyyAA0H0VKFZTf4nd_n', symObjAddr: 0x5710, symBinAddr: 0xA840, symSize: 0x28C }
- { offsetInCU: 0x5E0F, offset: 0x35E19, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV20initPlacesByCellType33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardVFZTf4nd_n', symObjAddr: 0x599C, symBinAddr: 0xAACC, symSize: 0x3A8 }
- { offsetInCU: 0x629F, offset: 0x362A9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV23checkCellsByTypeIterate33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x5D44, symBinAddr: 0xAE74, symSize: 0x15C }
- { offsetInCU: 0x6492, offset: 0x3649C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV18checkPiecesIterate33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x5EA0, symBinAddr: 0xAFD0, symSize: 0x178 }
- { offsetInCU: 0x6572, offset: 0x3657C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15checkWaterCells33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x6018, symBinAddr: 0xB148, symSize: 0xDC }
- { offsetInCU: 0x6689, offset: 0x36693, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV6pieces33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x368, symBinAddr: 0x5498, symSize: 0x14 }
- { offsetInCU: 0x66A3, offset: 0x366AD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x37C, symBinAddr: 0x54AC, symSize: 0x30 }
- { offsetInCU: 0x66D9, offset: 0x366E3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15iteratingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x454, symBinAddr: 0x5584, symSize: 0x30 }
- { offsetInCU: 0x66F3, offset: 0x366FD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12endingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x510, symBinAddr: 0x5640, symSize: 0x14 }
- { offsetInCU: 0x670D, offset: 0x36717, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16placesByCellType_WZ', symObjAddr: 0x524, symBinAddr: 0x5654, symSize: 0x24 }
- { offsetInCU: 0x6C29, offset: 0x36C33, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8setValue_6forKeyyq_n_xtF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x3614, symBinAddr: 0x8744, symSize: 0xB0 }
- { offsetInCU: 0x6C9E, offset: 0x36CA8, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x36C4, symBinAddr: 0x87F4, symSize: 0x70 }
- { offsetInCU: 0x6CCB, offset: 0x36CD5, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x3734, symBinAddr: 0x8864, symSize: 0x3C }
- { offsetInCU: 0x6D0E, offset: 0x36D18, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x3770, symBinAddr: 0x88A0, symSize: 0x64 }
- { offsetInCU: 0x6D86, offset: 0x36D90, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x37D4, symBinAddr: 0x8904, symSize: 0xE0 }
- { offsetInCU: 0x6EBE, offset: 0x36EC8, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x38B4, symBinAddr: 0x89E4, symSize: 0x20 }
- { offsetInCU: 0x6EE1, offset: 0x36EEB, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5.resume.0', symObjAddr: 0x38D4, symBinAddr: 0x8A04, symSize: 0x10 }
- { offsetInCU: 0x6F24, offset: 0x36F2E, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV12mutatingFind_8isUniques10_HashTableV6BucketV6bucket_Sb5foundtx_SbtF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x38E4, symBinAddr: 0x8A14, symSize: 0xC8 }
- { offsetInCU: 0x6F8C, offset: 0x36F96, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV12mutatingFind_8isUniques10_HashTableV6BucketV6bucket_Sb5foundtx_SbtF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x39AC, symBinAddr: 0x8ADC, symSize: 0xE0 }
- { offsetInCU: 0x6FE2, offset: 0x36FEC, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF14DouShouQiModel5BoardV_TB5', symObjAddr: 0x3A8C, symBinAddr: 0x8BBC, symSize: 0x78 }
- { offsetInCU: 0x704F, offset: 0x37059, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x3B6C, symBinAddr: 0x8C9C, symSize: 0x1C0 }
- { offsetInCU: 0x7179, offset: 0x37183, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x3D2C, symBinAddr: 0x8E5C, symSize: 0x54 }
- { offsetInCU: 0x724A, offset: 0x37254, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF14DouShouQiModel5BoardV_TB5', symObjAddr: 0x3D80, symBinAddr: 0x8EB0, symSize: 0x260 }
- { offsetInCU: 0x740A, offset: 0x37414, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x4080, symBinAddr: 0x91B0, symSize: 0x1B0 }
- { offsetInCU: 0x748B, offset: 0x37495, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF14DouShouQiModel5BoardV_SiTg5', symObjAddr: 0x4230, symBinAddr: 0x9360, symSize: 0x1C8 }
- { offsetInCU: 0x7525, offset: 0x3752F, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x43F8, symBinAddr: 0x9528, symSize: 0x358 }
- { offsetInCU: 0x76A4, offset: 0x376AE, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF14DouShouQiModel5BoardV_SiTg5', symObjAddr: 0x4750, symBinAddr: 0x9880, symSize: 0x344 }
- { offsetInCU: 0x77B7, offset: 0x377C1, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x4A94, symBinAddr: 0x9BC4, symSize: 0x154 }
- { offsetInCU: 0x79C2, offset: 0x379CC, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x4BE8, symBinAddr: 0x9D18, symSize: 0x180 }
- { offsetInCU: 0x7BD8, offset: 0x37BE2, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x4D68, symBinAddr: 0x9E98, symSize: 0x190 }
- { offsetInCU: 0x7C3C, offset: 0x37C46, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x4EF8, symBinAddr: 0xA028, symSize: 0x298 }
- { offsetInCU: 0x7E42, offset: 0x37E4C, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x5190, symBinAddr: 0xA2C0, symSize: 0x33C }
- { offsetInCU: 0x8072, offset: 0x3807C, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x54CC, symBinAddr: 0xA5FC, symSize: 0x1C }
- { offsetInCU: 0x808A, offset: 0x38094, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x54E8, symBinAddr: 0xA618, symSize: 0x1C }
- { offsetInCU: 0x80D9, offset: 0x380E3, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x5504, symBinAddr: 0xA634, symSize: 0x110 }
- { offsetInCU: 0x8231, offset: 0x3823B, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x5614, symBinAddr: 0xA744, symSize: 0xFC }
- { offsetInCU: 0x84A2, offset: 0x384AC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOACs0F0AAWl', symObjAddr: 0x62EC, symBinAddr: 0xB41C, symSize: 0x44 }
- { offsetInCU: 0x84B6, offset: 0x384C0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOACs0G0AAWl', symObjAddr: 0x6330, symBinAddr: 0xB460, symSize: 0x44 }
- { offsetInCU: 0x84CA, offset: 0x384D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwCP', symObjAddr: 0x6374, symBinAddr: 0xB4A4, symSize: 0x34 }
- { offsetInCU: 0x84DE, offset: 0x384E8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwxx', symObjAddr: 0x63A8, symBinAddr: 0xB4D8, symSize: 0x28 }
- { offsetInCU: 0x84F2, offset: 0x384FC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwcp', symObjAddr: 0x63D0, symBinAddr: 0xB500, symSize: 0x34 }
- { offsetInCU: 0x8506, offset: 0x38510, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwca', symObjAddr: 0x6404, symBinAddr: 0xB534, symSize: 0x5C }
- { offsetInCU: 0x851A, offset: 0x38524, size: 0x8, addend: 0x0, symName: ___swift_memcpy16_8, symObjAddr: 0x6460, symBinAddr: 0xB590, symSize: 0xC }
- { offsetInCU: 0x852E, offset: 0x38538, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwta', symObjAddr: 0x646C, symBinAddr: 0xB59C, symSize: 0x44 }
- { offsetInCU: 0x8542, offset: 0x3854C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwet', symObjAddr: 0x64B0, symBinAddr: 0xB5E0, symSize: 0x48 }
- { offsetInCU: 0x8556, offset: 0x38560, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwst', symObjAddr: 0x64F8, symBinAddr: 0xB628, symSize: 0x3C }
- { offsetInCU: 0x856A, offset: 0x38574, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVMa', symObjAddr: 0x6534, symBinAddr: 0xB664, symSize: 0x10 }
- { offsetInCU: 0x857E, offset: 0x38588, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledName, symObjAddr: 0x6544, symBinAddr: 0xB674, symSize: 0x40 }
- { offsetInCU: 0x8642, offset: 0x3864C, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy14DouShouQiModel4MoveVG_s15EmptyCollectionVyANGTg5Tf4nndn_n', symObjAddr: 0x6684, symBinAddr: 0xB7B4, symSize: 0x178 }
- { offsetInCU: 0x8713, offset: 0x3871D, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lF14DouShouQiModel4MoveV_s15EmptyCollectionVyAHGTg5Tf4ndn_n', symObjAddr: 0x67FC, symBinAddr: 0xB92C, symSize: 0xC0 }
- { offsetInCU: 0x8922, offset: 0x3892C, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x548, symBinAddr: 0x5678, symSize: 0x4C }
- { offsetInCU: 0x893E, offset: 0x38948, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x594, symBinAddr: 0x56C4, symSize: 0x30 }
- { offsetInCU: 0x89E8, offset: 0x389F2, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x5C4, symBinAddr: 0x56F4, symSize: 0xE4 }
- { offsetInCU: 0x8F60, offset: 0x38F6A, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5Tf4gd_n', symObjAddr: 0x60F4, symBinAddr: 0xB224, symSize: 0x100 }
- { offsetInCU: 0x9091, offset: 0x3909B, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel5BoardV_SiTg5Tf4gd_n', symObjAddr: 0x61F4, symBinAddr: 0xB324, symSize: 0xF8 }
- { offsetInCU: 0x91DE, offset: 0x391E8, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel5OwnerO_AC6PlayerCTg5Tf4gd_n', symObjAddr: 0x6584, symBinAddr: 0xB6B4, symSize: 0x100 }
- { offsetInCU: 0x27, offset: 0x39527, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV6ofType7ownedBy9withPieceAcA0eG0O_AA5OwnerOAA0K0VSgtcfC', symObjAddr: 0x0, symBinAddr: 0xBE08, symSize: 0x1C }
- { offsetInCU: 0x4B, offset: 0x3954B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV6ofType7ownedBy9withPieceAcA0eG0O_AA5OwnerOAA0K0VSgtcfC', symObjAddr: 0x0, symBinAddr: 0xBE08, symSize: 0x1C }
- { offsetInCU: 0x9A, offset: 0x3959A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV11descriptionSSvg', symObjAddr: 0x1C, symBinAddr: 0xBE24, symSize: 0xF0 }
- { offsetInCU: 0x1DF, offset: 0x396DF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV8cellTypeAA0eG0Ovg', symObjAddr: 0x10C, symBinAddr: 0xBF14, symSize: 0xC }
- { offsetInCU: 0x1FD, offset: 0x396FD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV12initialOwnerAA0G0Ovg', symObjAddr: 0x118, symBinAddr: 0xBF20, symSize: 0xC }
- { offsetInCU: 0x21B, offset: 0x3971B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvg', symObjAddr: 0x124, symBinAddr: 0xBF2C, symSize: 0xC }
- { offsetInCU: 0x239, offset: 0x39739, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvs', symObjAddr: 0x130, symBinAddr: 0xBF38, symSize: 0xC }
- { offsetInCU: 0x277, offset: 0x39777, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvM', symObjAddr: 0x13C, symBinAddr: 0xBF44, symSize: 0x10 }
- { offsetInCU: 0x2A5, offset: 0x397A5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvM.resume.0', symObjAddr: 0x14C, symBinAddr: 0xBF54, symSize: 0x4 }
- { offsetInCU: 0x2D0, offset: 0x397D0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV2eeoiySbAC_ACtFZ', symObjAddr: 0x150, symBinAddr: 0xBF58, symSize: 0x4 }
- { offsetInCU: 0x2E4, offset: 0x397E4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x154, symBinAddr: 0xBF5C, symSize: 0x4 }
- { offsetInCU: 0x30F, offset: 0x3980F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x158, symBinAddr: 0xBF60, symSize: 0x4 }
- { offsetInCU: 0x32F, offset: 0x3982F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x158, symBinAddr: 0xBF60, symSize: 0x4 }
- { offsetInCU: 0x340, offset: 0x39840, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x15C, symBinAddr: 0xBF64, symSize: 0x58 }
- { offsetInCU: 0x3B4, offset: 0x398B4, size: 0x8, addend: 0x0, symName: ___swift_memcpy4_1, symObjAddr: 0x1B4, symBinAddr: 0xBFBC, symSize: 0xC }
- { offsetInCU: 0x3C8, offset: 0x398C8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVwet', symObjAddr: 0x1C4, symBinAddr: 0xBFC8, symSize: 0x44 }
- { offsetInCU: 0x3DC, offset: 0x398DC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVwst', symObjAddr: 0x208, symBinAddr: 0xC00C, symSize: 0x40 }
- { offsetInCU: 0x3F0, offset: 0x398F0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVMa', symObjAddr: 0x248, symBinAddr: 0xC04C, symSize: 0x10 }
- { offsetInCU: 0x2B, offset: 0x399FB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0xC05C, symSize: 0x1A4 }
- { offsetInCU: 0x4F, offset: 0x39A1F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGridSaySayAA4CellVGGvpZ', symObjAddr: 0xB338, symBinAddr: 0x1DB50, symSize: 0x0 }
- { offsetInCU: 0x1A2, offset: 0x39B72, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0xC05C, symSize: 0x1A4 }
- { offsetInCU: 0x582, offset: 0x39F52, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11createBoardAA0I0VyFZ', symObjAddr: 0x1A4, symBinAddr: 0xC200, symSize: 0x78 }
- { offsetInCU: 0x5C0, offset: 0x39F90, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10checkBoardyyAA0I0VKFZ', symObjAddr: 0x21C, symBinAddr: 0xC278, symSize: 0x14 }
- { offsetInCU: 0x5DB, offset: 0x39FAB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVACycfC', symObjAddr: 0x230, symBinAddr: 0xC28C, symSize: 0x30 }
- { offsetInCU: 0x61F, offset: 0x39FEF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10occurences8historicACSDyAA5BoardVSiG_SayAA4MoveVGtcfC', symObjAddr: 0x260, symBinAddr: 0xC2BC, symSize: 0x54 }
- { offsetInCU: 0x683, offset: 0x3A053, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtF', symObjAddr: 0x2B4, symBinAddr: 0xC310, symSize: 0x17C }
- { offsetInCU: 0x99E, offset: 0x3A36E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itF', symObjAddr: 0x430, symBinAddr: 0xC48C, symSize: 0x29C }
- { offsetInCU: 0xCE8, offset: 0x3A6B8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11isMoveValid7onBoard7fromRow13andFromColumn02toN00o2ToQ0SbAA0L0V_S4itF', symObjAddr: 0x6CC, symBinAddr: 0xC728, symSize: 0xA0 }
- { offsetInCU: 0xDF9, offset: 0x3A7C9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11isMoveValid7onBoard04withI0SbAA0L0V_AA0I0VtF', symObjAddr: 0x76C, symBinAddr: 0xC7C8, symSize: 0x10C }
- { offsetInCU: 0x1033, offset: 0x3AA03, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV13getNextPlayerAA5OwnerOyF', symObjAddr: 0x878, symBinAddr: 0xC8D4, symSize: 0x3C }
- { offsetInCU: 0x1143, offset: 0x3AB13, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10isGameOver9withBoard16andLastRowPlayed0mN12ColumnPlayerSb_AA6ResultOtAA0L0V_S2itF', symObjAddr: 0x8B4, symBinAddr: 0xC910, symSize: 0x11C }
- { offsetInCU: 0x12BB, offset: 0x3AC8B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10playedMove_15onStartingBoard012andResultingL0yAA0I0V_AA0L0VAJtKF', symObjAddr: 0x9D0, symBinAddr: 0xCA2C, symSize: 0x1E4 }
- { offsetInCU: 0x1477, offset: 0x3AE47, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10occurencesSDyAA5BoardVSiGvg', symObjAddr: 0xBB4, symBinAddr: 0xCC10, symSize: 0x8 }
- { offsetInCU: 0x148B, offset: 0x3AE5B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8historicSayAA4MoveVGvg', symObjAddr: 0xBBC, symBinAddr: 0xCC18, symSize: 0x8 }
- { offsetInCU: 0x14BD, offset: 0x3AE8D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11createBoardAA0I0VyFZTW', symObjAddr: 0xBC4, symBinAddr: 0xCC20, symSize: 0x78 }
- { offsetInCU: 0x150A, offset: 0x3AEDA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10checkBoardyyAA0I0VKFZTW', symObjAddr: 0xC3C, symBinAddr: 0xCC98, symSize: 0x14 }
- { offsetInCU: 0x1542, offset: 0x3AF12, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP13getNextPlayerAA5OwnerOyFTW', symObjAddr: 0xC50, symBinAddr: 0xCCAC, symSize: 0x4 }
- { offsetInCU: 0x155E, offset: 0x3AF2E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtFTW', symObjAddr: 0xC54, symBinAddr: 0xCCB0, symSize: 0x14 }
- { offsetInCU: 0x157A, offset: 0x3AF4A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itFTW', symObjAddr: 0xC68, symBinAddr: 0xCCC4, symSize: 0x14 }
- { offsetInCU: 0x1596, offset: 0x3AF66, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11isMoveValid7onBoard7fromRow13andFromColumn02toN00o2ToQ0SbAA0L0V_S4itFTW', symObjAddr: 0xC7C, symBinAddr: 0xCCD8, symSize: 0x4 }
- { offsetInCU: 0x15B2, offset: 0x3AF82, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11isMoveValid7onBoard04withI0SbAA0L0V_AA0I0VtFTW', symObjAddr: 0xC80, symBinAddr: 0xCCDC, symSize: 0x4 }
- { offsetInCU: 0x15CE, offset: 0x3AF9E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10isGameOver9withBoard16andLastRowPlayed0mN12ColumnPlayerSb_AA6ResultOtAA0L0V_S2itFTW', symObjAddr: 0xC84, symBinAddr: 0xCCE0, symSize: 0x18 }
- { offsetInCU: 0x15EA, offset: 0x3AFBA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10playedMove_15onStartingBoard012andResultingL0yAA0I0V_AA0L0VALtKFTW', symObjAddr: 0xC9C, symBinAddr: 0xCCF8, symSize: 0x14 }
- { offsetInCU: 0x161E, offset: 0x3AFEE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0xCB0, symBinAddr: 0xCD0C, symSize: 0x8 }
- { offsetInCU: 0x163E, offset: 0x3B00E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0xCB0, symBinAddr: 0xCD0C, symSize: 0x8 }
- { offsetInCU: 0x1661, offset: 0x3B031, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0xCB8, symBinAddr: 0xCD14, symSize: 0x8 }
- { offsetInCU: 0x1681, offset: 0x3B051, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0xCB8, symBinAddr: 0xCD14, symSize: 0x8 }
- { offsetInCU: 0x1693, offset: 0x3B063, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV16checkCellsByType33_2B29F97F1EE5509065CD9853A78D42F5LLyyAA5BoardVKFZTf4nd_n', symObjAddr: 0xCC0, symBinAddr: 0xCD1C, symSize: 0x144 }
- { offsetInCU: 0x1895, offset: 0x3B265, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11checkPieces33_2B29F97F1EE5509065CD9853A78D42F5LLyyAA5BoardVKFZTf4nd_n', symObjAddr: 0xE04, symBinAddr: 0xCE60, symSize: 0x220 }
- { offsetInCU: 0x1BFD, offset: 0x3B5CD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10checkBoardyyAA0I0VKFZTf4nd_n', symObjAddr: 0x1024, symBinAddr: 0xD080, symSize: 0xB8 }
- { offsetInCU: 0x1E82, offset: 0x3B852, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwCP', symObjAddr: 0x11A4, symBinAddr: 0xD138, symSize: 0x34 }
- { offsetInCU: 0x1E96, offset: 0x3B866, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwxx', symObjAddr: 0x11D8, symBinAddr: 0xD16C, symSize: 0x28 }
- { offsetInCU: 0x1EAA, offset: 0x3B87A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwcp', symObjAddr: 0x1200, symBinAddr: 0xD194, symSize: 0x34 }
- { offsetInCU: 0x1EBE, offset: 0x3B88E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwca', symObjAddr: 0x1234, symBinAddr: 0xD1C8, symSize: 0x5C }
- { offsetInCU: 0x1ED2, offset: 0x3B8A2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwta', symObjAddr: 0x129C, symBinAddr: 0xD224, symSize: 0x44 }
- { offsetInCU: 0x1EE6, offset: 0x3B8B6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwet', symObjAddr: 0x12E0, symBinAddr: 0xD268, symSize: 0x48 }
- { offsetInCU: 0x1EFA, offset: 0x3B8CA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwst', symObjAddr: 0x1328, symBinAddr: 0xD2B0, symSize: 0x3C }
- { offsetInCU: 0x1F0E, offset: 0x3B8DE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVMa', symObjAddr: 0x1364, symBinAddr: 0xD2EC, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x3BC66, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0xD374, symSize: 0x68 }
- { offsetInCU: 0x7A, offset: 0x3BC95, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCfd', symObjAddr: 0x88, symBinAddr: 0xD3FC, symSize: 0x24 }
- { offsetInCU: 0x97, offset: 0x3BCB2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC26addPlayedCallbacksListeneryyyAA4MoveVSg_ACtYaKcF', symObjAddr: 0xAC, symBinAddr: 0xD420, symSize: 0xE4 }
- { offsetInCU: 0x1C2, offset: 0x3BDDD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKF', symObjAddr: 0x190, symBinAddr: 0xD504, symSize: 0x28 }
- { offsetInCU: 0x252, offset: 0x3BE6D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY0_', symObjAddr: 0x1B8, symBinAddr: 0xD52C, symSize: 0x10C }
- { offsetInCU: 0x3DB, offset: 0x3BFF6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTQ1_', symObjAddr: 0x2C4, symBinAddr: 0xD638, symSize: 0x70 }
- { offsetInCU: 0x49A, offset: 0x3C0B5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY2_', symObjAddr: 0x334, symBinAddr: 0xD6A8, symSize: 0xFC }
- { offsetInCU: 0x58F, offset: 0x3C1AA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY3_', symObjAddr: 0x430, symBinAddr: 0xD7A4, symSize: 0x40 }
- { offsetInCU: 0x601, offset: 0x3C21C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC4nameSSvg', symObjAddr: 0x470, symBinAddr: 0xD7E4, symSize: 0x2C }
- { offsetInCU: 0x630, offset: 0x3C24B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC2idAA5OwnerOvg', symObjAddr: 0x49C, symBinAddr: 0xD810, symSize: 0xC }
- { offsetInCU: 0x693, offset: 0x3C2AE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x4A8, symBinAddr: 0xD81C, symSize: 0x98 }
- { offsetInCU: 0x6C8, offset: 0x3C2E3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x540, symBinAddr: 0xD8B4, symSize: 0xC }
- { offsetInCU: 0x738, offset: 0x3C353, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCfD', symObjAddr: 0x6F4, symBinAddr: 0xDA68, symSize: 0x2C }
- { offsetInCU: 0x77C, offset: 0x3C397, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCMa', symObjAddr: 0x68, symBinAddr: 0xD3DC, symSize: 0x20 }
- { offsetInCU: 0x883, offset: 0x3C49E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TR', symObjAddr: 0x54C, symBinAddr: 0xD8C0, symSize: 0x6C }
- { offsetInCU: 0x8B6, offset: 0x3C4D1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTQ0_', symObjAddr: 0x5B8, symBinAddr: 0xD92C, symSize: 0x48 }
- { offsetInCU: 0x904, offset: 0x3C51F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA', symObjAddr: 0x624, symBinAddr: 0xD998, symSize: 0x88 }
- { offsetInCU: 0x934, offset: 0x3C54F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTATQ0_', symObjAddr: 0x6AC, symBinAddr: 0xDA20, symSize: 0x48 }
- { offsetInCU: 0x9FE, offset: 0x3C619, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSi3row_Si3colt_Tg5', symObjAddr: 0x82C, symBinAddr: 0xDBA0, symSize: 0xFC }
- { offsetInCU: 0xBA1, offset: 0x3C7BC, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x968, symBinAddr: 0xDC9C, symSize: 0x110 }
- { offsetInCU: 0xD44, offset: 0x3C95F, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0xA78, symBinAddr: 0xDDAC, symSize: 0xFC }
- { offsetInCU: 0xEF2, offset: 0x3CB0D, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSay14DouShouQiModel4CellVG_Tg5', symObjAddr: 0xB74, symBinAddr: 0xDEA8, symSize: 0x128 }
- { offsetInCU: 0x27, offset: 0x3CE30, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP7_domainSSvgTW', symObjAddr: 0x0, symBinAddr: 0xE150, symSize: 0x4 }
- { offsetInCU: 0x3F, offset: 0x3CE48, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwCP', symObjAddr: 0x10, symBinAddr: 0xE160, symSize: 0x48 }
- { offsetInCU: 0x53, offset: 0x3CE5C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwxx', symObjAddr: 0x58, symBinAddr: 0xE1A8, symSize: 0x18 }
- { offsetInCU: 0x67, offset: 0x3CE70, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwcp', symObjAddr: 0x70, symBinAddr: 0xE1C0, symSize: 0x48 }
- { offsetInCU: 0x7B, offset: 0x3CE84, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwca', symObjAddr: 0xB8, symBinAddr: 0xE208, symSize: 0xA0 }
- { offsetInCU: 0x8F, offset: 0x3CE98, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwta', symObjAddr: 0x164, symBinAddr: 0xE2A8, symSize: 0x60 }
- { offsetInCU: 0xA3, offset: 0x3CEAC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwet', symObjAddr: 0x1C4, symBinAddr: 0xE308, symSize: 0x58 }
- { offsetInCU: 0xB7, offset: 0x3CEC0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwst', symObjAddr: 0x21C, symBinAddr: 0xE360, symSize: 0x54 }
- { offsetInCU: 0xCB, offset: 0x3CED4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwug', symObjAddr: 0x270, symBinAddr: 0xE3B4, symSize: 0x18 }
- { offsetInCU: 0xDF, offset: 0x3CEE8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwup', symObjAddr: 0x288, symBinAddr: 0xE3CC, symSize: 0x4 }
- { offsetInCU: 0xF3, offset: 0x3CEFC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwui', symObjAddr: 0x28C, symBinAddr: 0xE3D0, symSize: 0x20 }
- { offsetInCU: 0x107, offset: 0x3CF10, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOMa', symObjAddr: 0x2AC, symBinAddr: 0xE3F0, symSize: 0x10 }
- { offsetInCU: 0x12C, offset: 0x3CF35, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP7_domainSSvgTW', symObjAddr: 0x0, symBinAddr: 0xE150, symSize: 0x4 }
- { offsetInCU: 0x148, offset: 0x3CF51, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP5_codeSivgTW', symObjAddr: 0x4, symBinAddr: 0xE154, symSize: 0x4 }
- { offsetInCU: 0x164, offset: 0x3CF6D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP9_userInfoyXlSgvgTW', symObjAddr: 0x8, symBinAddr: 0xE158, symSize: 0x4 }
- { offsetInCU: 0x180, offset: 0x3CF89, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0xC, symBinAddr: 0xE15C, symSize: 0x4 }
- { offsetInCU: 0x27, offset: 0x3D01D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x0, symBinAddr: 0xE400, symSize: 0x28 }
- { offsetInCU: 0x52, offset: 0x3D048, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x0, symBinAddr: 0xE400, symSize: 0x28 }
- { offsetInCU: 0xC5, offset: 0x3D0BB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY0_', symObjAddr: 0x28, symBinAddr: 0xE428, symSize: 0x1B4 }
- { offsetInCU: 0x3A6, offset: 0x3D39C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTQ1_', symObjAddr: 0x1DC, symBinAddr: 0xE5DC, symSize: 0x70 }
- { offsetInCU: 0x4A7, offset: 0x3D49D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY2_', symObjAddr: 0x24C, symBinAddr: 0xE64C, symSize: 0x104 }
- { offsetInCU: 0x5DD, offset: 0x3D5D3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY3_', symObjAddr: 0x350, symBinAddr: 0xE750, symSize: 0x4C }
- { offsetInCU: 0x6C4, offset: 0x3D6BA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x3C0, symBinAddr: 0xE7C0, symSize: 0x9C }
- { offsetInCU: 0x71B, offset: 0x3D711, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x45C, symBinAddr: 0xE85C, symSize: 0x6C }
- { offsetInCU: 0x76C, offset: 0x3D762, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCfd', symObjAddr: 0x4C8, symBinAddr: 0xE8C8, symSize: 0x24 }
- { offsetInCU: 0x7CB, offset: 0x3D7C1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCfD', symObjAddr: 0x4EC, symBinAddr: 0xE8EC, symSize: 0x2C }
- { offsetInCU: 0x9ED, offset: 0x3D9E3, size: 0x8, addend: 0x0, symName: ___swift_project_boxed_opaque_existential_1, symObjAddr: 0x39C, symBinAddr: 0xE79C, symSize: 0x24 }
- { offsetInCU: 0xA98, offset: 0x3DA8E, size: 0x8, addend: 0x0, symName: '_$sSGsE4next10upperBoundqd__qd___ts17FixedWidthIntegerRd__SURd__lFs27SystemRandomNumberGeneratorV_SuTg5', symObjAddr: 0x518, symBinAddr: 0xE918, symSize: 0x88 }
- { offsetInCU: 0xB39, offset: 0x3DB2F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCMa', symObjAddr: 0x5A0, symBinAddr: 0xE9A0, symSize: 0x20 }
- { offsetInCU: 0x27, offset: 0x3DCDB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO8allCasesSayACGvgZ', symObjAddr: 0x0, symBinAddr: 0xE9C0, symSize: 0x48 }
- { offsetInCU: 0x6C, offset: 0x3DD20, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO8allCasesSayACGvgZ', symObjAddr: 0x0, symBinAddr: 0xE9C0, symSize: 0x48 }
- { offsetInCU: 0xDB, offset: 0x3DD8F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO2eeoiySbAC_ACtFZ', symObjAddr: 0x88, symBinAddr: 0xEA08, symSize: 0x14 }
- { offsetInCU: 0x10E, offset: 0x3DDC2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO4hash4intoys6HasherVz_tF', symObjAddr: 0x9C, symBinAddr: 0xEA1C, symSize: 0x28 }
- { offsetInCU: 0x1A4, offset: 0x3DE58, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO9hashValueSivg', symObjAddr: 0xC4, symBinAddr: 0xEA44, symSize: 0x44 }
- { offsetInCU: 0x29E, offset: 0x3DF52, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x108, symBinAddr: 0xEA88, symSize: 0x14 }
- { offsetInCU: 0x2BE, offset: 0x3DF72, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x108, symBinAddr: 0xEA88, symSize: 0x14 }
- { offsetInCU: 0x2FE, offset: 0x3DFB2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x11C, symBinAddr: 0xEA9C, symSize: 0x44 }
- { offsetInCU: 0x3E1, offset: 0x3E095, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x160, symBinAddr: 0xEAE0, symSize: 0x28 }
- { offsetInCU: 0x46D, offset: 0x3E121, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOs12CaseIterableAAsADP8allCases03AllJ0QzvgZTW', symObjAddr: 0x2A4, symBinAddr: 0xEC24, symSize: 0x58 }
- { offsetInCU: 0x509, offset: 0x3E1BD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASQWb', symObjAddr: 0x1C8, symBinAddr: 0xEB48, symSize: 0x4 }
- { offsetInCU: 0x51D, offset: 0x3E1D1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOACSQAAWl', symObjAddr: 0x1CC, symBinAddr: 0xEB4C, symSize: 0x44 }
- { offsetInCU: 0x531, offset: 0x3E1E5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOs12CaseIterableAA8AllCasessADP_SlWT', symObjAddr: 0x210, symBinAddr: 0xEB90, symSize: 0x4 }
- { offsetInCU: 0x545, offset: 0x3E1F9, size: 0x8, addend: 0x0, symName: '_$sSay14DouShouQiModel8CellTypeOGSayxGSlsWl', symObjAddr: 0x214, symBinAddr: 0xEB94, symSize: 0x4C }
- { offsetInCU: 0x559, offset: 0x3E20D, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledNameAbstract, symObjAddr: 0x260, symBinAddr: 0xEBE0, symSize: 0x44 }
- { offsetInCU: 0x56D, offset: 0x3E221, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwet', symObjAddr: 0x30C, symBinAddr: 0xEC7C, symSize: 0x90 }
- { offsetInCU: 0x581, offset: 0x3E235, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwst', symObjAddr: 0x39C, symBinAddr: 0xED0C, symSize: 0xBC }
- { offsetInCU: 0x595, offset: 0x3E249, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwug', symObjAddr: 0x458, symBinAddr: 0xEDC8, symSize: 0x8 }
- { offsetInCU: 0x5A9, offset: 0x3E25D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwup', symObjAddr: 0x460, symBinAddr: 0xEDD0, symSize: 0x4 }
- { offsetInCU: 0x5BD, offset: 0x3E271, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwui', symObjAddr: 0x464, symBinAddr: 0xEDD4, symSize: 0x8 }
- { offsetInCU: 0x5D1, offset: 0x3E285, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOMa', symObjAddr: 0x46C, symBinAddr: 0xEDDC, symSize: 0x10 }
- { offsetInCU: 0x63E, offset: 0x3E2F2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x188, symBinAddr: 0xEB08, symSize: 0x40 }
- { offsetInCU: 0x2B, offset: 0x3E432, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV8withGridACSgSaySayAA4CellVGG_tcfC', symObjAddr: 0x0, symBinAddr: 0xEDEC, symSize: 0x68 }
- { offsetInCU: 0xA6, offset: 0x3E4AD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV8withGridACSgSaySayAA4CellVGG_tcfC', symObjAddr: 0x0, symBinAddr: 0xEDEC, symSize: 0x68 }
- { offsetInCU: 0x2B0, offset: 0x3E6B7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11countPieces2ofSiAA5OwnerO_tF', symObjAddr: 0x68, symBinAddr: 0xEE54, symSize: 0x1C0 }
- { offsetInCU: 0x583, offset: 0x3E98A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV4hash4intoys6HasherVz_tF', symObjAddr: 0x228, symBinAddr: 0xF014, symSize: 0xD0 }
- { offsetInCU: 0x7F1, offset: 0x3EBF8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV6nbRowsSivg', symObjAddr: 0x2F8, symBinAddr: 0xF0E4, symSize: 0x8 }
- { offsetInCU: 0x80F, offset: 0x3EC16, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV9nbColumnsSivg', symObjAddr: 0x300, symBinAddr: 0xF0EC, symSize: 0x8 }
- { offsetInCU: 0x82D, offset: 0x3EC34, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV4gridSaySayAA4CellVGGvg', symObjAddr: 0x308, symBinAddr: 0xF0F4, symSize: 0x8 }
- { offsetInCU: 0x84B, offset: 0x3EC52, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11countPiecesSi04nbOfgI7Player1_Si0higI7Player2tyF', symObjAddr: 0x310, symBinAddr: 0xF0FC, symSize: 0xD0 }
- { offsetInCU: 0xA02, offset: 0x3EE09, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV6insert5piece5atRow9andColumnAA0E6ResultOAA5PieceV_S2itF', symObjAddr: 0x3E0, symBinAddr: 0xF1CC, symSize: 0x150 }
- { offsetInCU: 0xC18, offset: 0x3F01F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11removePiece5atRow9andColumnAA0E6ResultOSi_SitF', symObjAddr: 0x530, symBinAddr: 0xF31C, symSize: 0x14C }
- { offsetInCU: 0xE35, offset: 0x3F23C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV2eeoiySbAC_ACtFZ', symObjAddr: 0x67C, symBinAddr: 0xF468, symSize: 0x28 }
- { offsetInCU: 0xE77, offset: 0x3F27E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV9hashValueSivg', symObjAddr: 0x6A4, symBinAddr: 0xF490, symSize: 0x50 }
- { offsetInCU: 0xF03, offset: 0x3F30A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH9hashValueSivgTW', symObjAddr: 0x6F4, symBinAddr: 0xF4E0, symSize: 0x50 }
- { offsetInCU: 0xF92, offset: 0x3F399, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x744, symBinAddr: 0xF530, symSize: 0x4 }
- { offsetInCU: 0xFC0, offset: 0x3F3C7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x794, symBinAddr: 0xF580, symSize: 0x28 }
- { offsetInCU: 0x125D, offset: 0x3F664, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x7BC, symBinAddr: 0xF5A8, symSize: 0x14 }
- { offsetInCU: 0x1295, offset: 0x3F69C, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x7D0, symBinAddr: 0xF5BC, symSize: 0x14 }
- { offsetInCU: 0x12CD, offset: 0x3F6D4, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSay14DouShouQiModel4CellVG_Tg5', symObjAddr: 0x7E4, symBinAddr: 0xF5D0, symSize: 0x14 }
- { offsetInCU: 0x1305, offset: 0x3F70C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASQWb', symObjAddr: 0x9B0, symBinAddr: 0xF79C, symSize: 0x4 }
- { offsetInCU: 0x1319, offset: 0x3F720, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVACSQAAWl', symObjAddr: 0x9B4, symBinAddr: 0xF7A0, symSize: 0x44 }
- { offsetInCU: 0x132D, offset: 0x3F734, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwCP', symObjAddr: 0x9F8, symBinAddr: 0xF7E4, symSize: 0x34 }
- { offsetInCU: 0x1341, offset: 0x3F748, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwxx', symObjAddr: 0xA2C, symBinAddr: 0xF818, symSize: 0x8 }
- { offsetInCU: 0x1355, offset: 0x3F75C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwcp', symObjAddr: 0xA34, symBinAddr: 0xF820, symSize: 0x34 }
- { offsetInCU: 0x1369, offset: 0x3F770, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwca', symObjAddr: 0xA68, symBinAddr: 0xF854, symSize: 0x48 }
- { offsetInCU: 0x137D, offset: 0x3F784, size: 0x8, addend: 0x0, symName: ___swift_memcpy24_8, symObjAddr: 0xAB0, symBinAddr: 0xF89C, symSize: 0x14 }
- { offsetInCU: 0x1391, offset: 0x3F798, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwta', symObjAddr: 0xAC4, symBinAddr: 0xF8B0, symSize: 0x38 }
- { offsetInCU: 0x13A5, offset: 0x3F7AC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwet', symObjAddr: 0xAFC, symBinAddr: 0xF8E8, symSize: 0x48 }
- { offsetInCU: 0x13B9, offset: 0x3F7C0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwst', symObjAddr: 0xB44, symBinAddr: 0xF930, symSize: 0x40 }
- { offsetInCU: 0x13CD, offset: 0x3F7D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVMa', symObjAddr: 0xB84, symBinAddr: 0xF970, symSize: 0x10 }
- { offsetInCU: 0x1532, offset: 0x3F939, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x748, symBinAddr: 0xF534, symSize: 0x4C }
- { offsetInCU: 0x1570, offset: 0x3F977, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0xF5E4, symSize: 0x98 }
- { offsetInCU: 0x1590, offset: 0x3F997, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0xF5E4, symSize: 0x98 }
- { offsetInCU: 0x15A4, offset: 0x3F9AB, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0xF5E4, symSize: 0x98 }
- { offsetInCU: 0x15B8, offset: 0x3F9BF, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0xF5E4, symSize: 0x98 }
- { offsetInCU: 0x1644, offset: 0x3FA4B, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZSay14DouShouQiModel4CellVG_Tg5Tf4nnd_n', symObjAddr: 0x890, symBinAddr: 0xF67C, symSize: 0x120 }
- { offsetInCU: 0x27, offset: 0x3FC94, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9withOwner9andAnimalAcA0G0O_AA0I0OtcfC', symObjAddr: 0x0, symBinAddr: 0xF980, symSize: 0x14 }
- { offsetInCU: 0x46, offset: 0x3FCB3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9withOwner9andAnimalAcA0G0O_AA0I0OtcfC', symObjAddr: 0x0, symBinAddr: 0xF980, symSize: 0x14 }
- { offsetInCU: 0x85, offset: 0x3FCF2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV11descriptionSSvg', symObjAddr: 0x14, symBinAddr: 0xF994, symSize: 0xB4 }
- { offsetInCU: 0x176, offset: 0x3FDE3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV5ownerAA5OwnerOvg', symObjAddr: 0xC8, symBinAddr: 0xFA48, symSize: 0xC }
- { offsetInCU: 0x194, offset: 0x3FE01, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV6animalAA6AnimalOvg', symObjAddr: 0xD4, symBinAddr: 0xFA54, symSize: 0xC }
- { offsetInCU: 0x1B2, offset: 0x3FE1F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV4hash4intoys6HasherVz_tF', symObjAddr: 0xE0, symBinAddr: 0xFA60, symSize: 0x3C }
- { offsetInCU: 0x2E8, offset: 0x3FF55, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV2eeoiySbAC_ACtFZ', symObjAddr: 0x11C, symBinAddr: 0xFA9C, symSize: 0x20 }
- { offsetInCU: 0x355, offset: 0x3FFC2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9hashValueSivg', symObjAddr: 0x13C, symBinAddr: 0xFABC, symSize: 0x5C }
- { offsetInCU: 0x4EB, offset: 0x40158, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x198, symBinAddr: 0xFB18, symSize: 0x4 }
- { offsetInCU: 0x516, offset: 0x40183, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH9hashValueSivgTW', symObjAddr: 0x19C, symBinAddr: 0xFB1C, symSize: 0x5C }
- { offsetInCU: 0x6C9, offset: 0x40336, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1F8, symBinAddr: 0xFB78, symSize: 0x3C }
- { offsetInCU: 0x82D, offset: 0x4049A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x28C, symBinAddr: 0xFC0C, symSize: 0x20 }
- { offsetInCU: 0x84D, offset: 0x404BA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x28C, symBinAddr: 0xFC0C, symSize: 0x20 }
- { offsetInCU: 0x949, offset: 0x405B6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASQWb', symObjAddr: 0x2AC, symBinAddr: 0xFC2C, symSize: 0x4 }
- { offsetInCU: 0x95D, offset: 0x405CA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVACSQAAWl', symObjAddr: 0x2B0, symBinAddr: 0xFC30, symSize: 0x44 }
- { offsetInCU: 0x971, offset: 0x405DE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVwet', symObjAddr: 0x304, symBinAddr: 0xFC74, symSize: 0x94 }
- { offsetInCU: 0x985, offset: 0x405F2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVwst', symObjAddr: 0x398, symBinAddr: 0xFD08, symSize: 0xBC }
- { offsetInCU: 0x999, offset: 0x40606, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVMa', symObjAddr: 0x454, symBinAddr: 0xFDC4, symSize: 0x10 }
- { offsetInCU: 0xA44, offset: 0x406B1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x234, symBinAddr: 0xFBB4, symSize: 0x58 }
- { offsetInCU: 0x27, offset: 0x408B0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0xFDD4, symSize: 0x4 }
- { offsetInCU: 0x4B, offset: 0x408D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0xFDD4, symSize: 0x4 }
- { offsetInCU: 0x6E, offset: 0x408F7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x14, symBinAddr: 0xFDE8, symSize: 0x4 }
- { offsetInCU: 0x8E, offset: 0x40917, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x14, symBinAddr: 0xFDE8, symSize: 0x4 }
- { offsetInCU: 0x9F, offset: 0x40928, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x18, symBinAddr: 0xFDEC, symSize: 0x118 }
- { offsetInCU: 0x1AE, offset: 0x40A37, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwCP', symObjAddr: 0x130, symBinAddr: 0xFF04, symSize: 0x30 }
- { offsetInCU: 0x1C2, offset: 0x40A4B, size: 0x8, addend: 0x0, symName: ___swift_memcpy25_8, symObjAddr: 0x164, symBinAddr: 0xFF34, symSize: 0x14 }
- { offsetInCU: 0x1D6, offset: 0x40A5F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwet', symObjAddr: 0x178, symBinAddr: 0xFF48, symSize: 0x48 }
- { offsetInCU: 0x1EA, offset: 0x40A73, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwst', symObjAddr: 0x1C0, symBinAddr: 0xFF90, symSize: 0x48 }
- { offsetInCU: 0x1FE, offset: 0x40A87, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwug', symObjAddr: 0x208, symBinAddr: 0xFFD8, symSize: 0x18 }
- { offsetInCU: 0x212, offset: 0x40A9B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwup', symObjAddr: 0x220, symBinAddr: 0xFFF0, symSize: 0x4 }
- { offsetInCU: 0x226, offset: 0x40AAF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwui', symObjAddr: 0x224, symBinAddr: 0xFFF4, symSize: 0x1C }
- { offsetInCU: 0x23A, offset: 0x40AC3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOMa', symObjAddr: 0x240, symBinAddr: 0x10010, symSize: 0x10 }
- { offsetInCU: 0x25F, offset: 0x40AE8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP7_domainSSvgTW', symObjAddr: 0x4, symBinAddr: 0xFDD8, symSize: 0x4 }
- { offsetInCU: 0x27B, offset: 0x40B04, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP5_codeSivgTW', symObjAddr: 0x8, symBinAddr: 0xFDDC, symSize: 0x4 }
- { offsetInCU: 0x297, offset: 0x40B20, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP9_userInfoyXlSgvgTW', symObjAddr: 0xC, symBinAddr: 0xFDE0, symSize: 0x4 }
- { offsetInCU: 0x2B3, offset: 0x40B3C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0x10, symBinAddr: 0xFDE4, symSize: 0x4 }
- { offsetInCU: 0x27, offset: 0x40BE5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10020, symSize: 0x14 }
- { offsetInCU: 0x4B, offset: 0x40C09, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10020, symSize: 0x14 }
- { offsetInCU: 0x7E, offset: 0x40C3C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO17simpleDescriptionSSvg', symObjAddr: 0x14, symBinAddr: 0x10034, symSize: 0x18 }
- { offsetInCU: 0xA9, offset: 0x40C67, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO4hash4intoys6HasherVz_tF', symObjAddr: 0x2C, symBinAddr: 0x1004C, symSize: 0x28 }
- { offsetInCU: 0x13F, offset: 0x40CFD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO9hashValueSivg', symObjAddr: 0x54, symBinAddr: 0x10074, symSize: 0x44 }
- { offsetInCU: 0x239, offset: 0x40DF7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x98, symBinAddr: 0x100B8, symSize: 0x14 }
- { offsetInCU: 0x259, offset: 0x40E17, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x98, symBinAddr: 0x100B8, symSize: 0x14 }
- { offsetInCU: 0x299, offset: 0x40E57, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH9hashValueSivgTW', symObjAddr: 0xAC, symBinAddr: 0x100CC, symSize: 0x44 }
- { offsetInCU: 0x37C, offset: 0x40F3A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xF0, symBinAddr: 0x10110, symSize: 0x28 }
- { offsetInCU: 0x405, offset: 0x40FC3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASQWb', symObjAddr: 0x158, symBinAddr: 0x10178, symSize: 0x4 }
- { offsetInCU: 0x419, offset: 0x40FD7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOACSQAAWl', symObjAddr: 0x15C, symBinAddr: 0x1017C, symSize: 0x44 }
- { offsetInCU: 0x42D, offset: 0x40FEB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwet', symObjAddr: 0x1B0, symBinAddr: 0x101C0, symSize: 0x90 }
- { offsetInCU: 0x441, offset: 0x40FFF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwst', symObjAddr: 0x240, symBinAddr: 0x10250, symSize: 0xBC }
- { offsetInCU: 0x455, offset: 0x41013, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwug', symObjAddr: 0x2FC, symBinAddr: 0x1030C, symSize: 0x8 }
- { offsetInCU: 0x469, offset: 0x41027, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwup', symObjAddr: 0x304, symBinAddr: 0x10314, symSize: 0x4 }
- { offsetInCU: 0x47D, offset: 0x4103B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwui', symObjAddr: 0x308, symBinAddr: 0x10318, symSize: 0x8 }
- { offsetInCU: 0x491, offset: 0x4104F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOMa', symObjAddr: 0x310, symBinAddr: 0x10320, symSize: 0x10 }
- { offsetInCU: 0x4E9, offset: 0x410A7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x118, symBinAddr: 0x10138, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x411D1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0x10330, symSize: 0x6C }
- { offsetInCU: 0xAC, offset: 0x41256, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0x10330, symSize: 0x6C }
- { offsetInCU: 0xF0, offset: 0x4129A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCfd', symObjAddr: 0x6C, symBinAddr: 0x1039C, symSize: 0x24 }
- { offsetInCU: 0x155, offset: 0x412FF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x90, symBinAddr: 0x103C0, symSize: 0x9C }
- { offsetInCU: 0x1BD, offset: 0x41367, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCfD', symObjAddr: 0x12C, symBinAddr: 0x1045C, symSize: 0x2C }
- { offsetInCU: 0x217, offset: 0x413C1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCMa', symObjAddr: 0x158, symBinAddr: 0x10488, symSize: 0x20 }
- { offsetInCU: 0x27, offset: 0x41484, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x104A8, symSize: 0x4 }
- { offsetInCU: 0x46, offset: 0x414A3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x104A8, symSize: 0x4 }
- { offsetInCU: 0x5A, offset: 0x414B7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2of7fromRow13andFromColumn02toH00i2ToK0AcA5OwnerO_S4itcfC', symObjAddr: 0x4, symBinAddr: 0x104AC, symSize: 0x14 }
- { offsetInCU: 0xC1, offset: 0x4151E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV5ownerAA5OwnerOvg', symObjAddr: 0x18, symBinAddr: 0x104C0, symSize: 0xC }
- { offsetInCU: 0xDF, offset: 0x4153C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV9rowOriginSivg', symObjAddr: 0x24, symBinAddr: 0x104CC, symSize: 0x8 }
- { offsetInCU: 0xFD, offset: 0x4155A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV12columnOriginSivg', symObjAddr: 0x2C, symBinAddr: 0x104D4, symSize: 0x8 }
- { offsetInCU: 0x11B, offset: 0x41578, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV14rowDestinationSivg', symObjAddr: 0x34, symBinAddr: 0x104DC, symSize: 0x8 }
- { offsetInCU: 0x139, offset: 0x41596, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV17columnDestinationSivg', symObjAddr: 0x3C, symBinAddr: 0x104E4, symSize: 0x8 }
- { offsetInCU: 0x157, offset: 0x415B4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV11descriptionSSvg', symObjAddr: 0x44, symBinAddr: 0x104EC, symSize: 0x198 }
- { offsetInCU: 0x287, offset: 0x416E4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x1DC, symBinAddr: 0x10684, symSize: 0x4 }
- { offsetInCU: 0x2B2, offset: 0x4170F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1E0, symBinAddr: 0x10688, symSize: 0x4 }
- { offsetInCU: 0x2D2, offset: 0x4172F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1E0, symBinAddr: 0x10688, symSize: 0x4 }
- { offsetInCU: 0x2E3, offset: 0x41740, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x1E4, symBinAddr: 0x1068C, symSize: 0x48 }
- { offsetInCU: 0x316, offset: 0x41773, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwCP', symObjAddr: 0x22C, symBinAddr: 0x106D4, symSize: 0x30 }
- { offsetInCU: 0x32A, offset: 0x41787, size: 0x8, addend: 0x0, symName: ___swift_memcpy40_8, symObjAddr: 0x260, symBinAddr: 0x10704, symSize: 0x14 }
- { offsetInCU: 0x33E, offset: 0x4179B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwet', symObjAddr: 0x274, symBinAddr: 0x10718, symSize: 0x44 }
- { offsetInCU: 0x352, offset: 0x417AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwst', symObjAddr: 0x2B8, symBinAddr: 0x1075C, symSize: 0x4C }
- { offsetInCU: 0x366, offset: 0x417C3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVMa', symObjAddr: 0x304, symBinAddr: 0x107A8, symSize: 0x10 }
- { offsetInCU: 0x27, offset: 0x418B4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueSivg', symObjAddr: 0x0, symBinAddr: 0x107B8, symSize: 0xC }
- { offsetInCU: 0x4B, offset: 0x418D8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueSivg', symObjAddr: 0x0, symBinAddr: 0x107B8, symSize: 0xC }
- { offsetInCU: 0x66, offset: 0x418F3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueACSgSi_tcfC', symObjAddr: 0xC, symBinAddr: 0x107C4, symSize: 0x18 }
- { offsetInCU: 0xB8, offset: 0x41945, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x130, symBinAddr: 0x108E8, symSize: 0x8 }
- { offsetInCU: 0xD4, offset: 0x41961, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x138, symBinAddr: 0x108F0, symSize: 0x10 }
- { offsetInCU: 0xEC, offset: 0x41979, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x138, symBinAddr: 0x108F0, symSize: 0x10 }
- { offsetInCU: 0x109, offset: 0x41996, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASQWb', symObjAddr: 0x38, symBinAddr: 0x107F0, symSize: 0x4 }
- { offsetInCU: 0x11D, offset: 0x419AA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOACSQAAWl', symObjAddr: 0x3C, symBinAddr: 0x107F4, symSize: 0x44 }
- { offsetInCU: 0x147, offset: 0x419D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwet', symObjAddr: 0x158, symBinAddr: 0x10900, symSize: 0x90 }
- { offsetInCU: 0x15B, offset: 0x419E8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwst', symObjAddr: 0x1E8, symBinAddr: 0x10990, symSize: 0xBC }
- { offsetInCU: 0x16F, offset: 0x419FC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwug', symObjAddr: 0x2A4, symBinAddr: 0x10A4C, symSize: 0x8 }
- { offsetInCU: 0x183, offset: 0x41A10, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwup', symObjAddr: 0x2AC, symBinAddr: 0x10A54, symSize: 0x4 }
- { offsetInCU: 0x197, offset: 0x41A24, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwui', symObjAddr: 0x2B0, symBinAddr: 0x10A58, symSize: 0x8 }
- { offsetInCU: 0x1AB, offset: 0x41A38, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOMa', symObjAddr: 0x2B8, symBinAddr: 0x10A60, symSize: 0x10 }
- { offsetInCU: 0x1E5, offset: 0x41A72, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x24, symBinAddr: 0x107DC, symSize: 0x14 }
- { offsetInCU: 0x276, offset: 0x41B03, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH9hashValueSivgTW', symObjAddr: 0x80, symBinAddr: 0x10838, symSize: 0x44 }
- { offsetInCU: 0x34E, offset: 0x41BDB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xC4, symBinAddr: 0x1087C, symSize: 0x2C }
- { offsetInCU: 0x3CA, offset: 0x41C57, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xF0, symBinAddr: 0x108A8, symSize: 0x40 }
- { offsetInCU: 0x97, offset: 0x41DF5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvg', symObjAddr: 0xBC, symBinAddr: 0x10B2C, symSize: 0x4C }
- { offsetInCU: 0xE0, offset: 0x41E3E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5rulesAA5Rules_pvg', symObjAddr: 0x16C, symBinAddr: 0x10BDC, symSize: 0x48 }
- { offsetInCU: 0xFF, offset: 0x41E5D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC7playersSDyAA5OwnerOAA6PlayerCGvg', symObjAddr: 0x1F8, symBinAddr: 0x10C68, symSize: 0x8 }
- { offsetInCU: 0x12C, offset: 0x41E8A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfC', symObjAddr: 0x200, symBinAddr: 0x10C70, symSize: 0x64 }
- { offsetInCU: 0x151, offset: 0x41EAF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfc', symObjAddr: 0x264, symBinAddr: 0x10CD4, symSize: 0x464 }
- { offsetInCU: 0x553, offset: 0x422B1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_', symObjAddr: 0x7B0, symBinAddr: 0x11178, symSize: 0x84 }
- { offsetInCU: 0x602, offset: 0x42360, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TQ0_', symObjAddr: 0x834, symBinAddr: 0x111FC, symSize: 0x68 }
- { offsetInCU: 0x69B, offset: 0x423F9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TY2_', symObjAddr: 0x89C, symBinAddr: 0x11264, symSize: 0x1C }
- { offsetInCU: 0x6E0, offset: 0x4243E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_', symObjAddr: 0x8B8, symBinAddr: 0x11280, symSize: 0x84 }
- { offsetInCU: 0x78F, offset: 0x424ED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TQ0_', symObjAddr: 0x93C, symBinAddr: 0x11304, symSize: 0x68 }
- { offsetInCU: 0x828, offset: 0x42586, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TY1_', symObjAddr: 0x9A4, symBinAddr: 0x1136C, symSize: 0xC }
- { offsetInCU: 0x882, offset: 0x425E0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TY2_', symObjAddr: 0x9B0, symBinAddr: 0x11378, symSize: 0x1C }
- { offsetInCU: 0x8C7, offset: 0x42625, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withBoard8andRules0H7Player10H7Player2AcA0G0V_AA0I0_pAA6PlayerCALtKcfC', symObjAddr: 0x9CC, symBinAddr: 0x11394, symSize: 0x6C }
- { offsetInCU: 0x8EC, offset: 0x4264A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withBoard8andRules0H7Player10H7Player2AcA0G0V_AA0I0_pAA6PlayerCALtKcfc', symObjAddr: 0xA38, symBinAddr: 0x11400, symSize: 0x2C4 }
- { offsetInCU: 0x9E9, offset: 0x42747, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE15StartedListeneryyyAA5BoardVcF', symObjAddr: 0xCFC, symBinAddr: 0x116C4, symSize: 0xD4 }
- { offsetInCU: 0xB14, offset: 0x42872, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC25addPlayerNotifiedListeneryyyAA5BoardV_AA0G0CtYaKcF', symObjAddr: 0xDD0, symBinAddr: 0x11798, symSize: 0xD4 }
- { offsetInCU: 0xC3F, offset: 0x4299D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE15ChangedListeneryyyACYacF', symObjAddr: 0xF58, symBinAddr: 0x11920, symSize: 0xD4 }
- { offsetInCU: 0xD6A, offset: 0x42AC8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE12OverListeneryyyAA5BoardV_AA6ResultOAA6PlayerCSgtcF', symObjAddr: 0x108C, symBinAddr: 0x11A54, symSize: 0xD4 }
- { offsetInCU: 0xE95, offset: 0x42BF3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC30addMoveChosenCallbacksListeneryyyAA5BoardV_AA0G0VAA6PlayerCtcF', symObjAddr: 0x1160, symBinAddr: 0x11B28, symSize: 0xD4 }
- { offsetInCU: 0xFC0, offset: 0x42D1E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC31addInvalidMoveCallbacksListeneryyyAA5BoardV_AA0H0VAA6PlayerCSbtcF', symObjAddr: 0x1234, symBinAddr: 0x11BFC, symSize: 0xD4 }
- { offsetInCU: 0x10EB, offset: 0x42E49, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC23addBoardChangedListeneryyyAA0G0VcF', symObjAddr: 0x1308, symBinAddr: 0x11CD0, symSize: 0xD4 }
- { offsetInCU: 0x1216, offset: 0x42F74, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC23addPieceRemovedListeneryyySi_SiAA0G0VtcF', symObjAddr: 0x13DC, symBinAddr: 0x11DA4, symSize: 0xD4 }
- { offsetInCU: 0x135F, offset: 0x430BD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC18notifyPieceRemoved33_4E9958627B7DCD90B6D32369387417C3LLyySi_SiAA0G0VtF', symObjAddr: 0x14B0, symBinAddr: 0x11E78, symSize: 0xC8 }
- { offsetInCU: 0x150C, offset: 0x4326A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKF', symObjAddr: 0x1578, symBinAddr: 0x11F40, symSize: 0x28 }
- { offsetInCU: 0x1914, offset: 0x43672, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY0_', symObjAddr: 0x15A0, symBinAddr: 0x11F68, symSize: 0x9E8 }
- { offsetInCU: 0x267D, offset: 0x443DB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTQ1_', symObjAddr: 0x1F88, symBinAddr: 0x12950, symSize: 0x60 }
- { offsetInCU: 0x27B0, offset: 0x4450E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY2_', symObjAddr: 0x1FE8, symBinAddr: 0x129B0, symSize: 0x220 }
- { offsetInCU: 0x2AB9, offset: 0x44817, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTQ3_', symObjAddr: 0x2208, symBinAddr: 0x12BD0, symSize: 0x70 }
- { offsetInCU: 0x2BB2, offset: 0x44910, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY4_', symObjAddr: 0x2278, symBinAddr: 0x12C40, symSize: 0x10C }
- { offsetInCU: 0x2CE1, offset: 0x44A3F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY5_', symObjAddr: 0x2384, symBinAddr: 0x12D4C, symSize: 0x5C }
- { offsetInCU: 0x2D8F, offset: 0x44AED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC6isOverSbvg', symObjAddr: 0x23E0, symBinAddr: 0x12DA8, symSize: 0x30 }
- { offsetInCU: 0x2DAC, offset: 0x44B0A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKF', symObjAddr: 0x2410, symBinAddr: 0x12DD8, symSize: 0x18 }
- { offsetInCU: 0x2E63, offset: 0x44BC1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY0_', symObjAddr: 0x2428, symBinAddr: 0x12DF0, symSize: 0x348 }
- { offsetInCU: 0x3351, offset: 0x450AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTQ1_', symObjAddr: 0x2770, symBinAddr: 0x13138, symSize: 0x60 }
- { offsetInCU: 0x33ED, offset: 0x4514B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY2_', symObjAddr: 0x27D0, symBinAddr: 0x13198, symSize: 0x210 }
- { offsetInCU: 0x3666, offset: 0x453C4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTQ3_', symObjAddr: 0x29E0, symBinAddr: 0x133A8, symSize: 0x70 }
- { offsetInCU: 0x370F, offset: 0x4546D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY4_', symObjAddr: 0x2A50, symBinAddr: 0x13418, symSize: 0x104 }
- { offsetInCU: 0x37EF, offset: 0x4554D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY5_', symObjAddr: 0x2B54, symBinAddr: 0x1351C, symSize: 0x5C }
- { offsetInCU: 0x383E, offset: 0x4559C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCfd', symObjAddr: 0x2BB0, symBinAddr: 0x13578, symSize: 0x6C }
- { offsetInCU: 0x386B, offset: 0x455C9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCfD', symObjAddr: 0x2C1C, symBinAddr: 0x135E4, symSize: 0x1C }
- { offsetInCU: 0x3899, offset: 0x455F7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvpACTK', symObjAddr: 0x0, symBinAddr: 0x10A70, symSize: 0x50 }
- { offsetInCU: 0x38CF, offset: 0x4562D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvpACTk', symObjAddr: 0x50, symBinAddr: 0x10AC0, symSize: 0x6C }
- { offsetInCU: 0x390F, offset: 0x4566D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5rulesAA5Rules_pvpACTk', symObjAddr: 0x108, symBinAddr: 0x10B78, symSize: 0x64 }
- { offsetInCU: 0x3951, offset: 0x456AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5Rules_pWOc', symObjAddr: 0x1B4, symBinAddr: 0x10C24, symSize: 0x44 }
- { offsetInCU: 0x3A57, offset: 0x457B5, size: 0x8, addend: 0x0, symName: ___swift_destroy_boxed_opaque_existential_1, symObjAddr: 0x730, symBinAddr: 0x11138, symSize: 0x20 }
- { offsetInCU: 0x3A6B, offset: 0x457C9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCMa', symObjAddr: 0x750, symBinAddr: 0x11158, symSize: 0x20 }
- { offsetInCU: 0x3B93, offset: 0x458F1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TR', symObjAddr: 0xEA4, symBinAddr: 0x1186C, symSize: 0x6C }
- { offsetInCU: 0x3BC6, offset: 0x45924, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TRTQ0_', symObjAddr: 0xF10, symBinAddr: 0x118D8, symSize: 0x48 }
- { offsetInCU: 0x3C82, offset: 0x459E0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TR', symObjAddr: 0x102C, symBinAddr: 0x119F4, symSize: 0x60 }
- { offsetInCU: 0x40E5, offset: 0x45E43, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TA', symObjAddr: 0x2C38, symBinAddr: 0x13600, symSize: 0x60 }
- { offsetInCU: 0x4115, offset: 0x45E73, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TA', symObjAddr: 0x2D44, symBinAddr: 0x13684, symSize: 0x60 }
- { offsetInCU: 0x4145, offset: 0x45EA3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA.7', symObjAddr: 0x2DA4, symBinAddr: 0x136E4, symSize: 0x88 }
- { offsetInCU: 0x4179, offset: 0x45ED7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVIegn_ACytIegnr_TRTA', symObjAddr: 0x2E2C, symBinAddr: 0x1376C, symSize: 0x20 }
- { offsetInCU: 0x41A9, offset: 0x45F07, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TRTA', symObjAddr: 0x2E4C, symBinAddr: 0x1378C, symSize: 0x88 }
- { offsetInCU: 0x41D9, offset: 0x45F37, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TRTA', symObjAddr: 0x2ED4, symBinAddr: 0x13814, symSize: 0x80 }
- { offsetInCU: 0x4209, offset: 0x45F67, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TRTATQ0_', symObjAddr: 0x2F54, symBinAddr: 0x13894, symSize: 0x48 }
- { offsetInCU: 0x4265, offset: 0x45FC3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6ResultOAA6PlayerCSgIegnng_AceHytIegnnnr_TRTA', symObjAddr: 0x2F9C, symBinAddr: 0x138DC, symSize: 0x24 }
- { offsetInCU: 0x4299, offset: 0x45FF7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA4MoveVAA6PlayerCIegnng_AceGytIegnnnr_TRTA', symObjAddr: 0x2FC0, symBinAddr: 0x13900, symSize: 0x24 }
- { offsetInCU: 0x42CD, offset: 0x4602B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA4MoveVAA6PlayerCSbIegnngy_AceGSbytIegnnnnr_TRTA', symObjAddr: 0x2FE4, symBinAddr: 0x13924, symSize: 0x28 }
- { offsetInCU: 0x4301, offset: 0x4605F, size: 0x8, addend: 0x0, symName: '_$sS2i14DouShouQiModel5PieceVIegyyn_S2iACytIegnnnr_TRTA', symObjAddr: 0x300C, symBinAddr: 0x1394C, symSize: 0x28 }
- { offsetInCU: 0x432A, offset: 0x46088, size: 0x8, addend: 0x0, symName: ___swift_mutable_project_boxed_opaque_existential_1, symObjAddr: 0x3034, symBinAddr: 0x13974, symSize: 0x28 }
- { offsetInCU: 0x433E, offset: 0x4609C, size: 0x8, addend: 0x0, symName: ___swift_assign_boxed_opaque_existential_1, symObjAddr: 0x3308, symBinAddr: 0x13C48, symSize: 0x168 }
...

@ -1,618 +0,0 @@
#if 0
#elif defined(__arm64__) && __arm64__
// Generated by Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
#ifndef DOUSHOUQIMODEL_SWIFT_H
#define DOUSHOUQIMODEL_SWIFT_H
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"
#if !defined(__has_include)
# define __has_include(x) 0
#endif
#if !defined(__has_attribute)
# define __has_attribute(x) 0
#endif
#if !defined(__has_feature)
# define __has_feature(x) 0
#endif
#if !defined(__has_warning)
# define __has_warning(x) 0
#endif
#if __has_include(<swift/objc-prologue.h>)
# include <swift/objc-prologue.h>
#endif
#pragma clang diagnostic ignored "-Wauto-import"
#if defined(__OBJC__)
#include <Foundation/Foundation.h>
#endif
#if defined(__cplusplus)
#include <cstdint>
#include <cstddef>
#include <cstdbool>
#include <cstring>
#include <stdlib.h>
#include <new>
#include <type_traits>
#else
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include <string.h>
#endif
#if defined(__cplusplus)
#if defined(__arm64e__) && __has_include(<ptrauth.h>)
# include <ptrauth.h>
#else
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreserved-macro-identifier"
# ifndef __ptrauth_swift_value_witness_function_pointer
# define __ptrauth_swift_value_witness_function_pointer(x)
# endif
# ifndef __ptrauth_swift_class_method_pointer
# define __ptrauth_swift_class_method_pointer(x)
# endif
#pragma clang diagnostic pop
#endif
#endif
#if !defined(SWIFT_TYPEDEFS)
# define SWIFT_TYPEDEFS 1
# if __has_include(<uchar.h>)
# include <uchar.h>
# elif !defined(__cplusplus)
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
# endif
typedef float swift_float2 __attribute__((__ext_vector_type__(2)));
typedef float swift_float3 __attribute__((__ext_vector_type__(3)));
typedef float swift_float4 __attribute__((__ext_vector_type__(4)));
typedef double swift_double2 __attribute__((__ext_vector_type__(2)));
typedef double swift_double3 __attribute__((__ext_vector_type__(3)));
typedef double swift_double4 __attribute__((__ext_vector_type__(4)));
typedef int swift_int2 __attribute__((__ext_vector_type__(2)));
typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2)));
typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3)));
typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
#endif
#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if !defined(SWIFT_CLASS_PROPERTY)
# if __has_feature(objc_class_property)
# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
# else
# define SWIFT_CLASS_PROPERTY(...)
# endif
#endif
#if !defined(SWIFT_RUNTIME_NAME)
# if __has_attribute(objc_runtime_name)
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
# else
# define SWIFT_RUNTIME_NAME(X)
# endif
#endif
#if !defined(SWIFT_COMPILE_NAME)
# if __has_attribute(swift_name)
# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
# else
# define SWIFT_COMPILE_NAME(X)
# endif
#endif
#if !defined(SWIFT_METHOD_FAMILY)
# if __has_attribute(objc_method_family)
# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
# else
# define SWIFT_METHOD_FAMILY(X)
# endif
#endif
#if !defined(SWIFT_NOESCAPE)
# if __has_attribute(noescape)
# define SWIFT_NOESCAPE __attribute__((noescape))
# else
# define SWIFT_NOESCAPE
# endif
#endif
#if !defined(SWIFT_RELEASES_ARGUMENT)
# if __has_attribute(ns_consumed)
# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
# else
# define SWIFT_RELEASES_ARGUMENT
# endif
#endif
#if !defined(SWIFT_WARN_UNUSED_RESULT)
# if __has_attribute(warn_unused_result)
# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
# else
# define SWIFT_WARN_UNUSED_RESULT
# endif
#endif
#if !defined(SWIFT_NORETURN)
# if __has_attribute(noreturn)
# define SWIFT_NORETURN __attribute__((noreturn))
# else
# define SWIFT_NORETURN
# endif
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_ENUM_EXTRA)
# define SWIFT_ENUM_EXTRA
#endif
#if !defined(SWIFT_CLASS)
# if __has_attribute(objc_subclassing_restricted)
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_RESILIENT_CLASS)
# if __has_attribute(objc_class_stub)
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
# else
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
# endif
#endif
#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif
#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if __has_attribute(objc_designated_initializer)
# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
# define OBJC_DESIGNATED_INITIALIZER
# endif
#endif
#if !defined(SWIFT_ENUM_ATTR)
# if __has_attribute(enum_extensibility)
# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
# else
# define SWIFT_ENUM_ATTR(_extensibility)
# endif
#endif
#if !defined(SWIFT_ENUM)
# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# if __has_feature(generalized_swift_name)
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# else
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
# endif
#endif
#if !defined(SWIFT_UNAVAILABLE)
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
#endif
#if !defined(SWIFT_UNAVAILABLE_MSG)
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
#endif
#if !defined(SWIFT_AVAILABILITY)
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
#endif
#if !defined(SWIFT_WEAK_IMPORT)
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
#endif
#if !defined(SWIFT_DEPRECATED)
# define SWIFT_DEPRECATED __attribute__((deprecated))
#endif
#if !defined(SWIFT_DEPRECATED_MSG)
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
#endif
#if !defined(SWIFT_DEPRECATED_OBJC)
# if __has_feature(attribute_diagnose_if_objc)
# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
# else
# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
# endif
#endif
#if defined(__OBJC__)
#if !defined(IBSegueAction)
# define IBSegueAction
#endif
#endif
#if !defined(SWIFT_EXTERN)
# if defined(__cplusplus)
# define SWIFT_EXTERN extern "C"
# else
# define SWIFT_EXTERN extern
# endif
#endif
#if !defined(SWIFT_CALL)
# define SWIFT_CALL __attribute__((swiftcall))
#endif
#if !defined(SWIFT_INDIRECT_RESULT)
# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result))
#endif
#if !defined(SWIFT_CONTEXT)
# define SWIFT_CONTEXT __attribute__((swift_context))
#endif
#if !defined(SWIFT_ERROR_RESULT)
# define SWIFT_ERROR_RESULT __attribute__((swift_error_result))
#endif
#if defined(__cplusplus)
# define SWIFT_NOEXCEPT noexcept
#else
# define SWIFT_NOEXCEPT
#endif
#if !defined(SWIFT_C_INLINE_THUNK)
# if __has_attribute(always_inline)
# if __has_attribute(nodebug)
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug))
# else
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline))
# endif
# else
# define SWIFT_C_INLINE_THUNK inline
# endif
#endif
#if defined(_WIN32)
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport)
#endif
#else
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL
#endif
#endif
#if defined(__OBJC__)
#if __has_feature(objc_modules)
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
#endif
#endif
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
#if __has_warning("-Wpragma-clang-attribute")
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
#endif
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wnullability"
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"
#if __has_attribute(external_source_symbol)
# pragma push_macro("any")
# undef any
# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="DouShouQiModel",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
# pragma pop_macro("any")
#endif
#if defined(__OBJC__)
#endif
#if __has_attribute(external_source_symbol)
# pragma clang attribute pop
#endif
#if defined(__cplusplus)
#endif
#pragma clang diagnostic pop
#endif
#elif defined(__x86_64__) && __x86_64__
// Generated by Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
#ifndef DOUSHOUQIMODEL_SWIFT_H
#define DOUSHOUQIMODEL_SWIFT_H
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"
#if !defined(__has_include)
# define __has_include(x) 0
#endif
#if !defined(__has_attribute)
# define __has_attribute(x) 0
#endif
#if !defined(__has_feature)
# define __has_feature(x) 0
#endif
#if !defined(__has_warning)
# define __has_warning(x) 0
#endif
#if __has_include(<swift/objc-prologue.h>)
# include <swift/objc-prologue.h>
#endif
#pragma clang diagnostic ignored "-Wauto-import"
#if defined(__OBJC__)
#include <Foundation/Foundation.h>
#endif
#if defined(__cplusplus)
#include <cstdint>
#include <cstddef>
#include <cstdbool>
#include <cstring>
#include <stdlib.h>
#include <new>
#include <type_traits>
#else
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include <string.h>
#endif
#if defined(__cplusplus)
#if defined(__arm64e__) && __has_include(<ptrauth.h>)
# include <ptrauth.h>
#else
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreserved-macro-identifier"
# ifndef __ptrauth_swift_value_witness_function_pointer
# define __ptrauth_swift_value_witness_function_pointer(x)
# endif
# ifndef __ptrauth_swift_class_method_pointer
# define __ptrauth_swift_class_method_pointer(x)
# endif
#pragma clang diagnostic pop
#endif
#endif
#if !defined(SWIFT_TYPEDEFS)
# define SWIFT_TYPEDEFS 1
# if __has_include(<uchar.h>)
# include <uchar.h>
# elif !defined(__cplusplus)
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
# endif
typedef float swift_float2 __attribute__((__ext_vector_type__(2)));
typedef float swift_float3 __attribute__((__ext_vector_type__(3)));
typedef float swift_float4 __attribute__((__ext_vector_type__(4)));
typedef double swift_double2 __attribute__((__ext_vector_type__(2)));
typedef double swift_double3 __attribute__((__ext_vector_type__(3)));
typedef double swift_double4 __attribute__((__ext_vector_type__(4)));
typedef int swift_int2 __attribute__((__ext_vector_type__(2)));
typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2)));
typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3)));
typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
#endif
#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if !defined(SWIFT_CLASS_PROPERTY)
# if __has_feature(objc_class_property)
# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
# else
# define SWIFT_CLASS_PROPERTY(...)
# endif
#endif
#if !defined(SWIFT_RUNTIME_NAME)
# if __has_attribute(objc_runtime_name)
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
# else
# define SWIFT_RUNTIME_NAME(X)
# endif
#endif
#if !defined(SWIFT_COMPILE_NAME)
# if __has_attribute(swift_name)
# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
# else
# define SWIFT_COMPILE_NAME(X)
# endif
#endif
#if !defined(SWIFT_METHOD_FAMILY)
# if __has_attribute(objc_method_family)
# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
# else
# define SWIFT_METHOD_FAMILY(X)
# endif
#endif
#if !defined(SWIFT_NOESCAPE)
# if __has_attribute(noescape)
# define SWIFT_NOESCAPE __attribute__((noescape))
# else
# define SWIFT_NOESCAPE
# endif
#endif
#if !defined(SWIFT_RELEASES_ARGUMENT)
# if __has_attribute(ns_consumed)
# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
# else
# define SWIFT_RELEASES_ARGUMENT
# endif
#endif
#if !defined(SWIFT_WARN_UNUSED_RESULT)
# if __has_attribute(warn_unused_result)
# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
# else
# define SWIFT_WARN_UNUSED_RESULT
# endif
#endif
#if !defined(SWIFT_NORETURN)
# if __has_attribute(noreturn)
# define SWIFT_NORETURN __attribute__((noreturn))
# else
# define SWIFT_NORETURN
# endif
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_ENUM_EXTRA)
# define SWIFT_ENUM_EXTRA
#endif
#if !defined(SWIFT_CLASS)
# if __has_attribute(objc_subclassing_restricted)
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_RESILIENT_CLASS)
# if __has_attribute(objc_class_stub)
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
# else
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
# endif
#endif
#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif
#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if __has_attribute(objc_designated_initializer)
# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
# define OBJC_DESIGNATED_INITIALIZER
# endif
#endif
#if !defined(SWIFT_ENUM_ATTR)
# if __has_attribute(enum_extensibility)
# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
# else
# define SWIFT_ENUM_ATTR(_extensibility)
# endif
#endif
#if !defined(SWIFT_ENUM)
# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# if __has_feature(generalized_swift_name)
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# else
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
# endif
#endif
#if !defined(SWIFT_UNAVAILABLE)
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
#endif
#if !defined(SWIFT_UNAVAILABLE_MSG)
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
#endif
#if !defined(SWIFT_AVAILABILITY)
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
#endif
#if !defined(SWIFT_WEAK_IMPORT)
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
#endif
#if !defined(SWIFT_DEPRECATED)
# define SWIFT_DEPRECATED __attribute__((deprecated))
#endif
#if !defined(SWIFT_DEPRECATED_MSG)
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
#endif
#if !defined(SWIFT_DEPRECATED_OBJC)
# if __has_feature(attribute_diagnose_if_objc)
# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
# else
# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
# endif
#endif
#if defined(__OBJC__)
#if !defined(IBSegueAction)
# define IBSegueAction
#endif
#endif
#if !defined(SWIFT_EXTERN)
# if defined(__cplusplus)
# define SWIFT_EXTERN extern "C"
# else
# define SWIFT_EXTERN extern
# endif
#endif
#if !defined(SWIFT_CALL)
# define SWIFT_CALL __attribute__((swiftcall))
#endif
#if !defined(SWIFT_INDIRECT_RESULT)
# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result))
#endif
#if !defined(SWIFT_CONTEXT)
# define SWIFT_CONTEXT __attribute__((swift_context))
#endif
#if !defined(SWIFT_ERROR_RESULT)
# define SWIFT_ERROR_RESULT __attribute__((swift_error_result))
#endif
#if defined(__cplusplus)
# define SWIFT_NOEXCEPT noexcept
#else
# define SWIFT_NOEXCEPT
#endif
#if !defined(SWIFT_C_INLINE_THUNK)
# if __has_attribute(always_inline)
# if __has_attribute(nodebug)
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug))
# else
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline))
# endif
# else
# define SWIFT_C_INLINE_THUNK inline
# endif
#endif
#if defined(_WIN32)
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport)
#endif
#else
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL
#endif
#endif
#if defined(__OBJC__)
#if __has_feature(objc_modules)
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
#endif
#endif
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
#if __has_warning("-Wpragma-clang-attribute")
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
#endif
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wnullability"
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"
#if __has_attribute(external_source_symbol)
# pragma push_macro("any")
# undef any
# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="DouShouQiModel",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
# pragma pop_macro("any")
#endif
#if defined(__OBJC__)
#endif
#if __has_attribute(external_source_symbol)
# pragma clang attribute pop
#endif
#if defined(__cplusplus)
#endif
#pragma clang diagnostic pop
#endif
#else
#error unsupported Swift architecture
#endif

@ -1,18 +0,0 @@
//
// DouShouQiModel.h
// DouShouQiModel
//
// Created by Marc Chevaldonné on 14/05/2024.
//
#import <Foundation/Foundation.h>
//! Project version number for DouShouQiModel.
FOUNDATION_EXPORT double DouShouQiModelVersionNumber;
//! Project version string for DouShouQiModel.
FOUNDATION_EXPORT const unsigned char DouShouQiModelVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <DouShouQiModel/PublicHeader.h>

@ -1,266 +0,0 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
// swift-module-flags: -target arm64-apple-ios16.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name DouShouQiModel
// swift-module-flags-ignorable: -enable-bare-slash-regex
@_exported import DouShouQiModel
import Foundation
import Swift
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
public enum Result : Swift.Equatable {
case notFinished
case even
case winner(winner: DouShouQiModel.Owner, reason: DouShouQiModel.WinningReason)
public static func == (a: DouShouQiModel.Result, b: DouShouQiModel.Result) -> Swift.Bool
}
public enum WinningReason {
case denReached, noMorePieces, tooManyOccurences, noMovesLeft
public static func == (a: DouShouQiModel.WinningReason, b: DouShouQiModel.WinningReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
public enum BoardResult : Swift.Equatable {
case unknown
case ok(piece: DouShouQiModel.Piece?)
case failed(reason: DouShouQiModel.BoardFailingReason)
public static func == (a: DouShouQiModel.BoardResult, b: DouShouQiModel.BoardResult) -> Swift.Bool
}
public enum BoardFailingReason {
case unknown, outOfBounds, cellNotEmpty, cellEmpty
public static func == (a: DouShouQiModel.BoardFailingReason, b: DouShouQiModel.BoardFailingReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class HumanPlayer : DouShouQiModel.Player {
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner, andInputMethod input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
public func changeInput(input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(_ move: DouShouQiModel.Move?) async throws
#endif
@objc deinit
}
public struct ClassicRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public struct Cell : Swift.CustomStringConvertible, Swift.Equatable {
public var description: Swift.String {
get
}
public let cellType: DouShouQiModel.CellType
public let initialOwner: DouShouQiModel.Owner
public var piece: DouShouQiModel.Piece?
public init(ofType cellType: DouShouQiModel.CellType, ownedBy initialOwner: DouShouQiModel.Owner = .noOne, withPiece piece: DouShouQiModel.Piece? = nil)
public static func == (a: DouShouQiModel.Cell, b: DouShouQiModel.Cell) -> Swift.Bool
}
public struct VerySimpleRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public protocol Rules {
static func createBoard() -> DouShouQiModel.Board
static func checkBoard(_ board: DouShouQiModel.Board) throws
func getNextPlayer() -> DouShouQiModel.Owner
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
func isMoveValid(onBoard: DouShouQiModel.Board, fromRow: Swift.Int, andFromColumn: Swift.Int, toRow: Swift.Int, andToColumn: Swift.Int) -> Swift.Bool
func isMoveValid(onBoard: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
func isGameOver(withBoard: DouShouQiModel.Board, andLastRowPlayed: Swift.Int, andLastColumnPlayer: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
var occurences: [DouShouQiModel.Board : Swift.Int] { get }
var historic: [DouShouQiModel.Move] { get }
}
public class Player {
final public let name: Swift.String
final public let id: DouShouQiModel.Owner
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addPlayedCallbacksListener(_ listener: @escaping (DouShouQiModel.Move?, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func notifyPlayed(withMove move: DouShouQiModel.Move?, andPlayer player: DouShouQiModel.Player) async throws
#endif
@objc deinit
}
public enum GameError : Swift.Error {
case invalidMove, nextPlayerError, badPlayerId(message: Swift.String), invalidRules, invalidPlayer, invalidGame, invalidBoard
}
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.IAPlayer {
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public enum CellType : Swift.CaseIterable {
case unknown, jungle, water, trap, den
public static func == (a: DouShouQiModel.CellType, b: DouShouQiModel.CellType) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public typealias AllCases = [DouShouQiModel.CellType]
public static var allCases: [DouShouQiModel.CellType] {
get
}
public var hashValue: Swift.Int {
get
}
}
public struct Board : Swift.Hashable {
public func hash(into hasher: inout Swift.Hasher)
public let nbRows: Swift.Int
public let nbColumns: Swift.Int
public var grid: [[DouShouQiModel.Cell]] {
get
}
public init?(withGrid grid: [[DouShouQiModel.Cell]])
public func countPieces(of owner: DouShouQiModel.Owner) -> Swift.Int
public func countPieces() -> (nbOfPiecesOfPlayer1: Swift.Int, nbOfPiecesOfPlayer2: Swift.Int)
public mutating func insert(piece: DouShouQiModel.Piece, atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public mutating func removePiece(atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public static func == (a: DouShouQiModel.Board, b: DouShouQiModel.Board) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public struct Piece : Swift.CustomStringConvertible, Swift.Hashable {
public var description: Swift.String {
get
}
public let owner: DouShouQiModel.Owner
public let animal: DouShouQiModel.Animal
public init(withOwner owner: DouShouQiModel.Owner, andAnimal animal: DouShouQiModel.Animal)
public func hash(into hasher: inout Swift.Hasher)
public static func == (a: DouShouQiModel.Piece, b: DouShouQiModel.Piece) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public enum InvalidBoardError : Swift.Error, Swift.Equatable {
case unknownError
case badDimensions(nbRows: Swift.Int, nbColumns: Swift.Int)
case badCellType(cellType: DouShouQiModel.CellType, row: Swift.Int, column: Swift.Int)
case multipleOccurenceOfSamePiece(piece: DouShouQiModel.Piece)
case pieceWithNoOwner(piece: DouShouQiModel.Piece)
case pieceNotAllowedOnThisCell(piece: DouShouQiModel.Piece, cell: DouShouQiModel.Cell)
public static func == (a: DouShouQiModel.InvalidBoardError, b: DouShouQiModel.InvalidBoardError) -> Swift.Bool
}
public enum Owner {
case noOne, player1, player2
public var simpleDescription: Swift.String {
get
}
public static func == (a: DouShouQiModel.Owner, b: DouShouQiModel.Owner) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class IAPlayer : DouShouQiModel.Player {
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public struct Move : Swift.CustomStringConvertible, Swift.Equatable {
public let owner: DouShouQiModel.Owner
public let rowOrigin: Swift.Int
public let columnOrigin: Swift.Int
public let rowDestination: Swift.Int
public let columnDestination: Swift.Int
public init(of owner: DouShouQiModel.Owner, fromRow rowOrigin: Swift.Int, andFromColumn colOrigin: Swift.Int, toRow rowDest: Swift.Int, andToColumn colDest: Swift.Int)
public var description: Swift.String {
get
}
public static func == (a: DouShouQiModel.Move, b: DouShouQiModel.Move) -> Swift.Bool
}
public enum Animal : Swift.Int {
case rat, cat, dog, wolf, leopard, tiger, lion, elephant
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
public class Game {
public var board: DouShouQiModel.Board {
get
}
public var rules: any DouShouQiModel.Rules {
get
}
final public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
public init(withRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public init(withBoard board: DouShouQiModel.Board, andRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
#endif
public func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addPieceRemovedListener(_ listener: @escaping (Swift.Int, Swift.Int, DouShouQiModel.Piece) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func onPlayed(with move: DouShouQiModel.Move?, from player: DouShouQiModel.Player) async throws
#endif
public var isOver: Swift.Bool {
get
}
#if compiler(>=5.3) && $AsyncAwait
public func start() async throws
#endif
@objc deinit
}
extension DouShouQiModel.WinningReason : Swift.Equatable {}
extension DouShouQiModel.WinningReason : Swift.Hashable {}
extension DouShouQiModel.BoardFailingReason : Swift.Equatable {}
extension DouShouQiModel.BoardFailingReason : Swift.Hashable {}
extension DouShouQiModel.CellType : Swift.Equatable {}
extension DouShouQiModel.CellType : Swift.Hashable {}
extension DouShouQiModel.Owner : Swift.Equatable {}
extension DouShouQiModel.Owner : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.Equatable {}
extension DouShouQiModel.Animal : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.RawRepresentable {}

@ -1,266 +0,0 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
// swift-module-flags: -target arm64-apple-ios16.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name DouShouQiModel
// swift-module-flags-ignorable: -enable-bare-slash-regex
@_exported import DouShouQiModel
import Foundation
import Swift
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
public enum Result : Swift.Equatable {
case notFinished
case even
case winner(winner: DouShouQiModel.Owner, reason: DouShouQiModel.WinningReason)
public static func == (a: DouShouQiModel.Result, b: DouShouQiModel.Result) -> Swift.Bool
}
public enum WinningReason {
case denReached, noMorePieces, tooManyOccurences, noMovesLeft
public static func == (a: DouShouQiModel.WinningReason, b: DouShouQiModel.WinningReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
public enum BoardResult : Swift.Equatable {
case unknown
case ok(piece: DouShouQiModel.Piece?)
case failed(reason: DouShouQiModel.BoardFailingReason)
public static func == (a: DouShouQiModel.BoardResult, b: DouShouQiModel.BoardResult) -> Swift.Bool
}
public enum BoardFailingReason {
case unknown, outOfBounds, cellNotEmpty, cellEmpty
public static func == (a: DouShouQiModel.BoardFailingReason, b: DouShouQiModel.BoardFailingReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class HumanPlayer : DouShouQiModel.Player {
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner, andInputMethod input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
public func changeInput(input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(_ move: DouShouQiModel.Move?) async throws
#endif
@objc deinit
}
public struct ClassicRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public struct Cell : Swift.CustomStringConvertible, Swift.Equatable {
public var description: Swift.String {
get
}
public let cellType: DouShouQiModel.CellType
public let initialOwner: DouShouQiModel.Owner
public var piece: DouShouQiModel.Piece?
public init(ofType cellType: DouShouQiModel.CellType, ownedBy initialOwner: DouShouQiModel.Owner = .noOne, withPiece piece: DouShouQiModel.Piece? = nil)
public static func == (a: DouShouQiModel.Cell, b: DouShouQiModel.Cell) -> Swift.Bool
}
public struct VerySimpleRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public protocol Rules {
static func createBoard() -> DouShouQiModel.Board
static func checkBoard(_ board: DouShouQiModel.Board) throws
func getNextPlayer() -> DouShouQiModel.Owner
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
func isMoveValid(onBoard: DouShouQiModel.Board, fromRow: Swift.Int, andFromColumn: Swift.Int, toRow: Swift.Int, andToColumn: Swift.Int) -> Swift.Bool
func isMoveValid(onBoard: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
func isGameOver(withBoard: DouShouQiModel.Board, andLastRowPlayed: Swift.Int, andLastColumnPlayer: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
var occurences: [DouShouQiModel.Board : Swift.Int] { get }
var historic: [DouShouQiModel.Move] { get }
}
public class Player {
final public let name: Swift.String
final public let id: DouShouQiModel.Owner
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addPlayedCallbacksListener(_ listener: @escaping (DouShouQiModel.Move?, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func notifyPlayed(withMove move: DouShouQiModel.Move?, andPlayer player: DouShouQiModel.Player) async throws
#endif
@objc deinit
}
public enum GameError : Swift.Error {
case invalidMove, nextPlayerError, badPlayerId(message: Swift.String), invalidRules, invalidPlayer, invalidGame, invalidBoard
}
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.IAPlayer {
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public enum CellType : Swift.CaseIterable {
case unknown, jungle, water, trap, den
public static func == (a: DouShouQiModel.CellType, b: DouShouQiModel.CellType) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public typealias AllCases = [DouShouQiModel.CellType]
public static var allCases: [DouShouQiModel.CellType] {
get
}
public var hashValue: Swift.Int {
get
}
}
public struct Board : Swift.Hashable {
public func hash(into hasher: inout Swift.Hasher)
public let nbRows: Swift.Int
public let nbColumns: Swift.Int
public var grid: [[DouShouQiModel.Cell]] {
get
}
public init?(withGrid grid: [[DouShouQiModel.Cell]])
public func countPieces(of owner: DouShouQiModel.Owner) -> Swift.Int
public func countPieces() -> (nbOfPiecesOfPlayer1: Swift.Int, nbOfPiecesOfPlayer2: Swift.Int)
public mutating func insert(piece: DouShouQiModel.Piece, atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public mutating func removePiece(atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public static func == (a: DouShouQiModel.Board, b: DouShouQiModel.Board) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public struct Piece : Swift.CustomStringConvertible, Swift.Hashable {
public var description: Swift.String {
get
}
public let owner: DouShouQiModel.Owner
public let animal: DouShouQiModel.Animal
public init(withOwner owner: DouShouQiModel.Owner, andAnimal animal: DouShouQiModel.Animal)
public func hash(into hasher: inout Swift.Hasher)
public static func == (a: DouShouQiModel.Piece, b: DouShouQiModel.Piece) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public enum InvalidBoardError : Swift.Error, Swift.Equatable {
case unknownError
case badDimensions(nbRows: Swift.Int, nbColumns: Swift.Int)
case badCellType(cellType: DouShouQiModel.CellType, row: Swift.Int, column: Swift.Int)
case multipleOccurenceOfSamePiece(piece: DouShouQiModel.Piece)
case pieceWithNoOwner(piece: DouShouQiModel.Piece)
case pieceNotAllowedOnThisCell(piece: DouShouQiModel.Piece, cell: DouShouQiModel.Cell)
public static func == (a: DouShouQiModel.InvalidBoardError, b: DouShouQiModel.InvalidBoardError) -> Swift.Bool
}
public enum Owner {
case noOne, player1, player2
public var simpleDescription: Swift.String {
get
}
public static func == (a: DouShouQiModel.Owner, b: DouShouQiModel.Owner) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class IAPlayer : DouShouQiModel.Player {
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public struct Move : Swift.CustomStringConvertible, Swift.Equatable {
public let owner: DouShouQiModel.Owner
public let rowOrigin: Swift.Int
public let columnOrigin: Swift.Int
public let rowDestination: Swift.Int
public let columnDestination: Swift.Int
public init(of owner: DouShouQiModel.Owner, fromRow rowOrigin: Swift.Int, andFromColumn colOrigin: Swift.Int, toRow rowDest: Swift.Int, andToColumn colDest: Swift.Int)
public var description: Swift.String {
get
}
public static func == (a: DouShouQiModel.Move, b: DouShouQiModel.Move) -> Swift.Bool
}
public enum Animal : Swift.Int {
case rat, cat, dog, wolf, leopard, tiger, lion, elephant
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
public class Game {
public var board: DouShouQiModel.Board {
get
}
public var rules: any DouShouQiModel.Rules {
get
}
final public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
public init(withRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public init(withBoard board: DouShouQiModel.Board, andRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
#endif
public func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addPieceRemovedListener(_ listener: @escaping (Swift.Int, Swift.Int, DouShouQiModel.Piece) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func onPlayed(with move: DouShouQiModel.Move?, from player: DouShouQiModel.Player) async throws
#endif
public var isOver: Swift.Bool {
get
}
#if compiler(>=5.3) && $AsyncAwait
public func start() async throws
#endif
@objc deinit
}
extension DouShouQiModel.WinningReason : Swift.Equatable {}
extension DouShouQiModel.WinningReason : Swift.Hashable {}
extension DouShouQiModel.BoardFailingReason : Swift.Equatable {}
extension DouShouQiModel.BoardFailingReason : Swift.Hashable {}
extension DouShouQiModel.CellType : Swift.Equatable {}
extension DouShouQiModel.CellType : Swift.Hashable {}
extension DouShouQiModel.Owner : Swift.Equatable {}
extension DouShouQiModel.Owner : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.Equatable {}
extension DouShouQiModel.Animal : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.RawRepresentable {}

@ -1,266 +0,0 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
// swift-module-flags: -target x86_64-apple-ios16.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name DouShouQiModel
// swift-module-flags-ignorable: -enable-bare-slash-regex
@_exported import DouShouQiModel
import Foundation
import Swift
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
public enum Result : Swift.Equatable {
case notFinished
case even
case winner(winner: DouShouQiModel.Owner, reason: DouShouQiModel.WinningReason)
public static func == (a: DouShouQiModel.Result, b: DouShouQiModel.Result) -> Swift.Bool
}
public enum WinningReason {
case denReached, noMorePieces, tooManyOccurences, noMovesLeft
public static func == (a: DouShouQiModel.WinningReason, b: DouShouQiModel.WinningReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
public enum BoardResult : Swift.Equatable {
case unknown
case ok(piece: DouShouQiModel.Piece?)
case failed(reason: DouShouQiModel.BoardFailingReason)
public static func == (a: DouShouQiModel.BoardResult, b: DouShouQiModel.BoardResult) -> Swift.Bool
}
public enum BoardFailingReason {
case unknown, outOfBounds, cellNotEmpty, cellEmpty
public static func == (a: DouShouQiModel.BoardFailingReason, b: DouShouQiModel.BoardFailingReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class HumanPlayer : DouShouQiModel.Player {
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner, andInputMethod input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
public func changeInput(input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(_ move: DouShouQiModel.Move?) async throws
#endif
@objc deinit
}
public struct ClassicRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public struct Cell : Swift.CustomStringConvertible, Swift.Equatable {
public var description: Swift.String {
get
}
public let cellType: DouShouQiModel.CellType
public let initialOwner: DouShouQiModel.Owner
public var piece: DouShouQiModel.Piece?
public init(ofType cellType: DouShouQiModel.CellType, ownedBy initialOwner: DouShouQiModel.Owner = .noOne, withPiece piece: DouShouQiModel.Piece? = nil)
public static func == (a: DouShouQiModel.Cell, b: DouShouQiModel.Cell) -> Swift.Bool
}
public struct VerySimpleRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public protocol Rules {
static func createBoard() -> DouShouQiModel.Board
static func checkBoard(_ board: DouShouQiModel.Board) throws
func getNextPlayer() -> DouShouQiModel.Owner
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
func isMoveValid(onBoard: DouShouQiModel.Board, fromRow: Swift.Int, andFromColumn: Swift.Int, toRow: Swift.Int, andToColumn: Swift.Int) -> Swift.Bool
func isMoveValid(onBoard: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
func isGameOver(withBoard: DouShouQiModel.Board, andLastRowPlayed: Swift.Int, andLastColumnPlayer: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
var occurences: [DouShouQiModel.Board : Swift.Int] { get }
var historic: [DouShouQiModel.Move] { get }
}
public class Player {
final public let name: Swift.String
final public let id: DouShouQiModel.Owner
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addPlayedCallbacksListener(_ listener: @escaping (DouShouQiModel.Move?, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func notifyPlayed(withMove move: DouShouQiModel.Move?, andPlayer player: DouShouQiModel.Player) async throws
#endif
@objc deinit
}
public enum GameError : Swift.Error {
case invalidMove, nextPlayerError, badPlayerId(message: Swift.String), invalidRules, invalidPlayer, invalidGame, invalidBoard
}
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.IAPlayer {
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public enum CellType : Swift.CaseIterable {
case unknown, jungle, water, trap, den
public static func == (a: DouShouQiModel.CellType, b: DouShouQiModel.CellType) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public typealias AllCases = [DouShouQiModel.CellType]
public static var allCases: [DouShouQiModel.CellType] {
get
}
public var hashValue: Swift.Int {
get
}
}
public struct Board : Swift.Hashable {
public func hash(into hasher: inout Swift.Hasher)
public let nbRows: Swift.Int
public let nbColumns: Swift.Int
public var grid: [[DouShouQiModel.Cell]] {
get
}
public init?(withGrid grid: [[DouShouQiModel.Cell]])
public func countPieces(of owner: DouShouQiModel.Owner) -> Swift.Int
public func countPieces() -> (nbOfPiecesOfPlayer1: Swift.Int, nbOfPiecesOfPlayer2: Swift.Int)
public mutating func insert(piece: DouShouQiModel.Piece, atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public mutating func removePiece(atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public static func == (a: DouShouQiModel.Board, b: DouShouQiModel.Board) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public struct Piece : Swift.CustomStringConvertible, Swift.Hashable {
public var description: Swift.String {
get
}
public let owner: DouShouQiModel.Owner
public let animal: DouShouQiModel.Animal
public init(withOwner owner: DouShouQiModel.Owner, andAnimal animal: DouShouQiModel.Animal)
public func hash(into hasher: inout Swift.Hasher)
public static func == (a: DouShouQiModel.Piece, b: DouShouQiModel.Piece) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public enum InvalidBoardError : Swift.Error, Swift.Equatable {
case unknownError
case badDimensions(nbRows: Swift.Int, nbColumns: Swift.Int)
case badCellType(cellType: DouShouQiModel.CellType, row: Swift.Int, column: Swift.Int)
case multipleOccurenceOfSamePiece(piece: DouShouQiModel.Piece)
case pieceWithNoOwner(piece: DouShouQiModel.Piece)
case pieceNotAllowedOnThisCell(piece: DouShouQiModel.Piece, cell: DouShouQiModel.Cell)
public static func == (a: DouShouQiModel.InvalidBoardError, b: DouShouQiModel.InvalidBoardError) -> Swift.Bool
}
public enum Owner {
case noOne, player1, player2
public var simpleDescription: Swift.String {
get
}
public static func == (a: DouShouQiModel.Owner, b: DouShouQiModel.Owner) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class IAPlayer : DouShouQiModel.Player {
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public struct Move : Swift.CustomStringConvertible, Swift.Equatable {
public let owner: DouShouQiModel.Owner
public let rowOrigin: Swift.Int
public let columnOrigin: Swift.Int
public let rowDestination: Swift.Int
public let columnDestination: Swift.Int
public init(of owner: DouShouQiModel.Owner, fromRow rowOrigin: Swift.Int, andFromColumn colOrigin: Swift.Int, toRow rowDest: Swift.Int, andToColumn colDest: Swift.Int)
public var description: Swift.String {
get
}
public static func == (a: DouShouQiModel.Move, b: DouShouQiModel.Move) -> Swift.Bool
}
public enum Animal : Swift.Int {
case rat, cat, dog, wolf, leopard, tiger, lion, elephant
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
public class Game {
public var board: DouShouQiModel.Board {
get
}
public var rules: any DouShouQiModel.Rules {
get
}
final public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
public init(withRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public init(withBoard board: DouShouQiModel.Board, andRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
#endif
public func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addPieceRemovedListener(_ listener: @escaping (Swift.Int, Swift.Int, DouShouQiModel.Piece) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func onPlayed(with move: DouShouQiModel.Move?, from player: DouShouQiModel.Player) async throws
#endif
public var isOver: Swift.Bool {
get
}
#if compiler(>=5.3) && $AsyncAwait
public func start() async throws
#endif
@objc deinit
}
extension DouShouQiModel.WinningReason : Swift.Equatable {}
extension DouShouQiModel.WinningReason : Swift.Hashable {}
extension DouShouQiModel.BoardFailingReason : Swift.Equatable {}
extension DouShouQiModel.BoardFailingReason : Swift.Hashable {}
extension DouShouQiModel.CellType : Swift.Equatable {}
extension DouShouQiModel.CellType : Swift.Hashable {}
extension DouShouQiModel.Owner : Swift.Equatable {}
extension DouShouQiModel.Owner : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.Equatable {}
extension DouShouQiModel.Animal : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.RawRepresentable {}

@ -1,266 +0,0 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
// swift-module-flags: -target x86_64-apple-ios16.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name DouShouQiModel
// swift-module-flags-ignorable: -enable-bare-slash-regex
@_exported import DouShouQiModel
import Foundation
import Swift
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
public enum Result : Swift.Equatable {
case notFinished
case even
case winner(winner: DouShouQiModel.Owner, reason: DouShouQiModel.WinningReason)
public static func == (a: DouShouQiModel.Result, b: DouShouQiModel.Result) -> Swift.Bool
}
public enum WinningReason {
case denReached, noMorePieces, tooManyOccurences, noMovesLeft
public static func == (a: DouShouQiModel.WinningReason, b: DouShouQiModel.WinningReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
public enum BoardResult : Swift.Equatable {
case unknown
case ok(piece: DouShouQiModel.Piece?)
case failed(reason: DouShouQiModel.BoardFailingReason)
public static func == (a: DouShouQiModel.BoardResult, b: DouShouQiModel.BoardResult) -> Swift.Bool
}
public enum BoardFailingReason {
case unknown, outOfBounds, cellNotEmpty, cellEmpty
public static func == (a: DouShouQiModel.BoardFailingReason, b: DouShouQiModel.BoardFailingReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class HumanPlayer : DouShouQiModel.Player {
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner, andInputMethod input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
public func changeInput(input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(_ move: DouShouQiModel.Move?) async throws
#endif
@objc deinit
}
public struct ClassicRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public struct Cell : Swift.CustomStringConvertible, Swift.Equatable {
public var description: Swift.String {
get
}
public let cellType: DouShouQiModel.CellType
public let initialOwner: DouShouQiModel.Owner
public var piece: DouShouQiModel.Piece?
public init(ofType cellType: DouShouQiModel.CellType, ownedBy initialOwner: DouShouQiModel.Owner = .noOne, withPiece piece: DouShouQiModel.Piece? = nil)
public static func == (a: DouShouQiModel.Cell, b: DouShouQiModel.Cell) -> Swift.Bool
}
public struct VerySimpleRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public protocol Rules {
static func createBoard() -> DouShouQiModel.Board
static func checkBoard(_ board: DouShouQiModel.Board) throws
func getNextPlayer() -> DouShouQiModel.Owner
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
func isMoveValid(onBoard: DouShouQiModel.Board, fromRow: Swift.Int, andFromColumn: Swift.Int, toRow: Swift.Int, andToColumn: Swift.Int) -> Swift.Bool
func isMoveValid(onBoard: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
func isGameOver(withBoard: DouShouQiModel.Board, andLastRowPlayed: Swift.Int, andLastColumnPlayer: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
var occurences: [DouShouQiModel.Board : Swift.Int] { get }
var historic: [DouShouQiModel.Move] { get }
}
public class Player {
final public let name: Swift.String
final public let id: DouShouQiModel.Owner
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addPlayedCallbacksListener(_ listener: @escaping (DouShouQiModel.Move?, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func notifyPlayed(withMove move: DouShouQiModel.Move?, andPlayer player: DouShouQiModel.Player) async throws
#endif
@objc deinit
}
public enum GameError : Swift.Error {
case invalidMove, nextPlayerError, badPlayerId(message: Swift.String), invalidRules, invalidPlayer, invalidGame, invalidBoard
}
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.IAPlayer {
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public enum CellType : Swift.CaseIterable {
case unknown, jungle, water, trap, den
public static func == (a: DouShouQiModel.CellType, b: DouShouQiModel.CellType) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public typealias AllCases = [DouShouQiModel.CellType]
public static var allCases: [DouShouQiModel.CellType] {
get
}
public var hashValue: Swift.Int {
get
}
}
public struct Board : Swift.Hashable {
public func hash(into hasher: inout Swift.Hasher)
public let nbRows: Swift.Int
public let nbColumns: Swift.Int
public var grid: [[DouShouQiModel.Cell]] {
get
}
public init?(withGrid grid: [[DouShouQiModel.Cell]])
public func countPieces(of owner: DouShouQiModel.Owner) -> Swift.Int
public func countPieces() -> (nbOfPiecesOfPlayer1: Swift.Int, nbOfPiecesOfPlayer2: Swift.Int)
public mutating func insert(piece: DouShouQiModel.Piece, atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public mutating func removePiece(atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public static func == (a: DouShouQiModel.Board, b: DouShouQiModel.Board) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public struct Piece : Swift.CustomStringConvertible, Swift.Hashable {
public var description: Swift.String {
get
}
public let owner: DouShouQiModel.Owner
public let animal: DouShouQiModel.Animal
public init(withOwner owner: DouShouQiModel.Owner, andAnimal animal: DouShouQiModel.Animal)
public func hash(into hasher: inout Swift.Hasher)
public static func == (a: DouShouQiModel.Piece, b: DouShouQiModel.Piece) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public enum InvalidBoardError : Swift.Error, Swift.Equatable {
case unknownError
case badDimensions(nbRows: Swift.Int, nbColumns: Swift.Int)
case badCellType(cellType: DouShouQiModel.CellType, row: Swift.Int, column: Swift.Int)
case multipleOccurenceOfSamePiece(piece: DouShouQiModel.Piece)
case pieceWithNoOwner(piece: DouShouQiModel.Piece)
case pieceNotAllowedOnThisCell(piece: DouShouQiModel.Piece, cell: DouShouQiModel.Cell)
public static func == (a: DouShouQiModel.InvalidBoardError, b: DouShouQiModel.InvalidBoardError) -> Swift.Bool
}
public enum Owner {
case noOne, player1, player2
public var simpleDescription: Swift.String {
get
}
public static func == (a: DouShouQiModel.Owner, b: DouShouQiModel.Owner) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class IAPlayer : DouShouQiModel.Player {
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public struct Move : Swift.CustomStringConvertible, Swift.Equatable {
public let owner: DouShouQiModel.Owner
public let rowOrigin: Swift.Int
public let columnOrigin: Swift.Int
public let rowDestination: Swift.Int
public let columnDestination: Swift.Int
public init(of owner: DouShouQiModel.Owner, fromRow rowOrigin: Swift.Int, andFromColumn colOrigin: Swift.Int, toRow rowDest: Swift.Int, andToColumn colDest: Swift.Int)
public var description: Swift.String {
get
}
public static func == (a: DouShouQiModel.Move, b: DouShouQiModel.Move) -> Swift.Bool
}
public enum Animal : Swift.Int {
case rat, cat, dog, wolf, leopard, tiger, lion, elephant
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
public class Game {
public var board: DouShouQiModel.Board {
get
}
public var rules: any DouShouQiModel.Rules {
get
}
final public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
public init(withRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public init(withBoard board: DouShouQiModel.Board, andRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
#endif
public func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addPieceRemovedListener(_ listener: @escaping (Swift.Int, Swift.Int, DouShouQiModel.Piece) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func onPlayed(with move: DouShouQiModel.Move?, from player: DouShouQiModel.Player) async throws
#endif
public var isOver: Swift.Bool {
get
}
#if compiler(>=5.3) && $AsyncAwait
public func start() async throws
#endif
@objc deinit
}
extension DouShouQiModel.WinningReason : Swift.Equatable {}
extension DouShouQiModel.WinningReason : Swift.Hashable {}
extension DouShouQiModel.BoardFailingReason : Swift.Equatable {}
extension DouShouQiModel.BoardFailingReason : Swift.Hashable {}
extension DouShouQiModel.CellType : Swift.Equatable {}
extension DouShouQiModel.CellType : Swift.Hashable {}
extension DouShouQiModel.Owner : Swift.Equatable {}
extension DouShouQiModel.Owner : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.Equatable {}
extension DouShouQiModel.Animal : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.RawRepresentable {}

@ -1,11 +0,0 @@
framework module DouShouQiModel {
umbrella header "DouShouQiModel.h"
export *
module * { export * }
}
module DouShouQiModel.Swift {
header "DouShouQiModel-Swift.h"
requires objc
}

@ -1,245 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>files</key>
<dict>
<key>Headers/DouShouQiModel-Swift.h</key>
<data>
Ugz84k7Dtyq8c1kVv5knXzRL8M8=
</data>
<key>Headers/DouShouQiModel.h</key>
<data>
oRFeERlH0MoI6LrvagIzL3ni4lM=
</data>
<key>Info.plist</key>
<data>
nK7+MI/Ze6f+km/d+6SafK4UOHw=
</data>
<key>Modules/DouShouQiModel.swiftmodule/arm64-apple-ios-simulator.abi.json</key>
<data>
5wlrw/S604f6EkkdO0sjydo0+Bc=
</data>
<key>Modules/DouShouQiModel.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface</key>
<data>
iWelfKfa40hASjZTv+0MmwJpt14=
</data>
<key>Modules/DouShouQiModel.swiftmodule/arm64-apple-ios-simulator.swiftdoc</key>
<data>
uNDHcaRHf/ULIsVZEMiJY2HGm4c=
</data>
<key>Modules/DouShouQiModel.swiftmodule/arm64-apple-ios-simulator.swiftinterface</key>
<data>
iWelfKfa40hASjZTv+0MmwJpt14=
</data>
<key>Modules/DouShouQiModel.swiftmodule/arm64-apple-ios-simulator.swiftmodule</key>
<data>
hIkz8AGNOjj+boCk29AkmkNg7U4=
</data>
<key>Modules/DouShouQiModel.swiftmodule/x86_64-apple-ios-simulator.abi.json</key>
<data>
5wlrw/S604f6EkkdO0sjydo0+Bc=
</data>
<key>Modules/DouShouQiModel.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface</key>
<data>
ulNUxrIsFIWqKNx6spilb7IJVR0=
</data>
<key>Modules/DouShouQiModel.swiftmodule/x86_64-apple-ios-simulator.swiftdoc</key>
<data>
tkYnhquJQVCRsNSI7Hl83a7/uFk=
</data>
<key>Modules/DouShouQiModel.swiftmodule/x86_64-apple-ios-simulator.swiftinterface</key>
<data>
ulNUxrIsFIWqKNx6spilb7IJVR0=
</data>
<key>Modules/DouShouQiModel.swiftmodule/x86_64-apple-ios-simulator.swiftmodule</key>
<data>
0ZAcidlUuohX1myhyQosgBBZq1s=
</data>
<key>Modules/module.modulemap</key>
<data>
tOh1oseR3w5cW6xQIaaghrv9LlM=
</data>
</dict>
<key>files2</key>
<dict>
<key>Headers/DouShouQiModel-Swift.h</key>
<dict>
<key>hash2</key>
<data>
X8yw4Beas8gUjOV/b4G2i2nanoGnSlTcLKeBiIYLXRI=
</data>
</dict>
<key>Headers/DouShouQiModel.h</key>
<dict>
<key>hash2</key>
<data>
a0LOmZXPnWhpMKaBoW1IdxOGAzn4RhRBe32928+2jeU=
</data>
</dict>
<key>Modules/DouShouQiModel.swiftmodule/arm64-apple-ios-simulator.abi.json</key>
<dict>
<key>hash2</key>
<data>
btM982otm47LMNIetdE5JR553fM9PjFPuS8AXm0+EpQ=
</data>
</dict>
<key>Modules/DouShouQiModel.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface</key>
<dict>
<key>hash2</key>
<data>
oe48ffKwbmJhKUMG/td3wfVID9DF4QgJz/dIPJweV5g=
</data>
</dict>
<key>Modules/DouShouQiModel.swiftmodule/arm64-apple-ios-simulator.swiftdoc</key>
<dict>
<key>hash2</key>
<data>
cpfiPzUVsQ9nZcmz7k/CLhMlNAa3hCWAVPNrKBhrKls=
</data>
</dict>
<key>Modules/DouShouQiModel.swiftmodule/arm64-apple-ios-simulator.swiftinterface</key>
<dict>
<key>hash2</key>
<data>
oe48ffKwbmJhKUMG/td3wfVID9DF4QgJz/dIPJweV5g=
</data>
</dict>
<key>Modules/DouShouQiModel.swiftmodule/arm64-apple-ios-simulator.swiftmodule</key>
<dict>
<key>hash2</key>
<data>
q85NBK13clOQfgVFgVjmL6pWsskBEw+Z45xPFMxL1+E=
</data>
</dict>
<key>Modules/DouShouQiModel.swiftmodule/x86_64-apple-ios-simulator.abi.json</key>
<dict>
<key>hash2</key>
<data>
btM982otm47LMNIetdE5JR553fM9PjFPuS8AXm0+EpQ=
</data>
</dict>
<key>Modules/DouShouQiModel.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface</key>
<dict>
<key>hash2</key>
<data>
agKcCCqs9pHq1e94l4ouc5WojSYeRzzGkrHxkw9FZ8c=
</data>
</dict>
<key>Modules/DouShouQiModel.swiftmodule/x86_64-apple-ios-simulator.swiftdoc</key>
<dict>
<key>hash2</key>
<data>
SsJ/b3BHzQ9S5Wz5tzNZPeo8WQ4dX+hCQFo95fU45as=
</data>
</dict>
<key>Modules/DouShouQiModel.swiftmodule/x86_64-apple-ios-simulator.swiftinterface</key>
<dict>
<key>hash2</key>
<data>
agKcCCqs9pHq1e94l4ouc5WojSYeRzzGkrHxkw9FZ8c=
</data>
</dict>
<key>Modules/DouShouQiModel.swiftmodule/x86_64-apple-ios-simulator.swiftmodule</key>
<dict>
<key>hash2</key>
<data>
0C4f5rpOmGFG3B9PLb/e4rylk+OdtHUNKJ+aW1e+MCE=
</data>
</dict>
<key>Modules/module.modulemap</key>
<dict>
<key>hash2</key>
<data>
XJ885pOXSQHhlMUP6dyA/ER9+SP/HZ+IMImbB4k5+rI=
</data>
</dict>
</dict>
<key>rules</key>
<dict>
<key>^.*</key>
<true/>
<key>^.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^version.plist$</key>
<true/>
</dict>
<key>rules2</key>
<dict>
<key>.*\.dSYM($|/)</key>
<dict>
<key>weight</key>
<real>11</real>
</dict>
<key>^(.*/)?\.DS_Store$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>2000</real>
</dict>
<key>^.*</key>
<true/>
<key>^.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^Info\.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^PkgInfo$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^embedded\.provisionprofile$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
<key>^version\.plist$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
</dict>
</dict>
</plist>

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleIdentifier</key>
<string>com.apple.xcode.dsym.fr.uca.iut.DouShouQiModel</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>dSYM</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>

@ -1,504 +0,0 @@
---
triple: 'arm64-apple-darwin'
binary-path: '/Users/marcchevaldonne/Library/Developer/Xcode/DerivedData/DouShouQiModel-bzzvovsrfmbhuydeirorjmljgtyf/Build/Intermediates.noindex/ArchiveIntermediates/DouShouQiModel/InstallationBuildProductsLocation/Library/Frameworks/DouShouQiModel.framework/DouShouQiModel'
relocations:
- { offsetInCU: 0x34, offset: 0x2EDE3, size: 0x8, addend: 0x0, symName: _DouShouQiModelVersionString, symObjAddr: 0x0, symBinAddr: 0x10F10, symSize: 0x0 }
- { offsetInCU: 0x69, offset: 0x2EE18, size: 0x8, addend: 0x0, symName: _DouShouQiModelVersionNumber, symObjAddr: 0x38, symBinAddr: 0x10F48, symSize: 0x0 }
- { offsetInCU: 0x27, offset: 0x2EE55, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0xE64, symSize: 0x4 }
- { offsetInCU: 0x4B, offset: 0x2EE79, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0xE64, symSize: 0x4 }
- { offsetInCU: 0x6E, offset: 0x2EE9C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0xE7C, symSize: 0x4 }
- { offsetInCU: 0x8E, offset: 0x2EEBC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0xE7C, symSize: 0x4 }
- { offsetInCU: 0x9F, offset: 0x2EECD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x148, symBinAddr: 0xFAC, symSize: 0x68 }
- { offsetInCU: 0xDD, offset: 0x2EF0B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO2eeoiySbAC_ACtFZ', symObjAddr: 0x4, symBinAddr: 0xE68, symSize: 0x14 }
- { offsetInCU: 0x110, offset: 0x2EF3E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO4hash4intoys6HasherVz_tF', symObjAddr: 0x1C, symBinAddr: 0xE80, symSize: 0x28 }
- { offsetInCU: 0x1A6, offset: 0x2EFD4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO9hashValueSivg', symObjAddr: 0x44, symBinAddr: 0xEA8, symSize: 0x44 }
- { offsetInCU: 0x2A0, offset: 0x2F0CE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0xEEC, symSize: 0x14 }
- { offsetInCU: 0x2C0, offset: 0x2F0EE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0xEEC, symSize: 0x14 }
- { offsetInCU: 0x300, offset: 0x2F12E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH9hashValueSivgTW', symObjAddr: 0x9C, symBinAddr: 0xF00, symSize: 0x44 }
- { offsetInCU: 0x3E3, offset: 0x2F211, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0xF44, symSize: 0x28 }
- { offsetInCU: 0x46C, offset: 0x2F29A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASQWb', symObjAddr: 0x1B0, symBinAddr: 0x1014, symSize: 0x4 }
- { offsetInCU: 0x480, offset: 0x2F2AE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOACSQAAWl', symObjAddr: 0x1B4, symBinAddr: 0x1018, symSize: 0x44 }
- { offsetInCU: 0x494, offset: 0x2F2C2, size: 0x8, addend: 0x0, symName: ___swift_memcpy2_1, symObjAddr: 0x1F8, symBinAddr: 0x105C, symSize: 0xC }
- { offsetInCU: 0x4A8, offset: 0x2F2D6, size: 0x8, addend: 0x0, symName: ___swift_noop_void_return, symObjAddr: 0x204, symBinAddr: 0x1068, symSize: 0x4 }
- { offsetInCU: 0x4BC, offset: 0x2F2EA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwet', symObjAddr: 0x208, symBinAddr: 0x106C, symSize: 0xAC }
- { offsetInCU: 0x4D0, offset: 0x2F2FE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwst', symObjAddr: 0x2B4, symBinAddr: 0x1118, symSize: 0xC4 }
- { offsetInCU: 0x4E4, offset: 0x2F312, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwug', symObjAddr: 0x378, symBinAddr: 0x11DC, symSize: 0x14 }
- { offsetInCU: 0x4F8, offset: 0x2F326, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwup', symObjAddr: 0x38C, symBinAddr: 0x11F0, symSize: 0x4 }
- { offsetInCU: 0x50C, offset: 0x2F33A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwui', symObjAddr: 0x390, symBinAddr: 0x11F4, symSize: 0x24 }
- { offsetInCU: 0x520, offset: 0x2F34E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOMa', symObjAddr: 0x3B4, symBinAddr: 0x1218, symSize: 0x10 }
- { offsetInCU: 0x534, offset: 0x2F362, size: 0x8, addend: 0x0, symName: ___swift_memcpy1_1, symObjAddr: 0x3C4, symBinAddr: 0x1228, symSize: 0xC }
- { offsetInCU: 0x548, offset: 0x2F376, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwet', symObjAddr: 0x3D0, symBinAddr: 0x1234, symSize: 0x90 }
- { offsetInCU: 0x55C, offset: 0x2F38A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwst', symObjAddr: 0x460, symBinAddr: 0x12C4, symSize: 0xBC }
- { offsetInCU: 0x570, offset: 0x2F39E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwug', symObjAddr: 0x51C, symBinAddr: 0x1380, symSize: 0x8 }
- { offsetInCU: 0x584, offset: 0x2F3B2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwup', symObjAddr: 0x524, symBinAddr: 0x1388, symSize: 0x4 }
- { offsetInCU: 0x598, offset: 0x2F3C6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwui', symObjAddr: 0x528, symBinAddr: 0x138C, symSize: 0x8 }
- { offsetInCU: 0x5AC, offset: 0x2F3DA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOMa', symObjAddr: 0x530, symBinAddr: 0x1394, symSize: 0x10 }
- { offsetInCU: 0x626, offset: 0x2F454, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x108, symBinAddr: 0xF6C, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x2F597, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x13A4, symSize: 0x4 }
- { offsetInCU: 0x4B, offset: 0x2F5BB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x13A4, symSize: 0x4 }
- { offsetInCU: 0x6E, offset: 0x2F5DE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0x13BC, symSize: 0x4 }
- { offsetInCU: 0x8E, offset: 0x2F5FE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0x13BC, symSize: 0x4 }
- { offsetInCU: 0x9F, offset: 0x2F60F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x148, symBinAddr: 0x14EC, symSize: 0x7C }
- { offsetInCU: 0xF5, offset: 0x2F665, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO2eeoiySbAC_ACtFZ', symObjAddr: 0x4, symBinAddr: 0x13A8, symSize: 0x14 }
- { offsetInCU: 0x128, offset: 0x2F698, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO4hash4intoys6HasherVz_tF', symObjAddr: 0x1C, symBinAddr: 0x13C0, symSize: 0x28 }
- { offsetInCU: 0x1BE, offset: 0x2F72E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO9hashValueSivg', symObjAddr: 0x44, symBinAddr: 0x13E8, symSize: 0x44 }
- { offsetInCU: 0x2B8, offset: 0x2F828, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0x142C, symSize: 0x14 }
- { offsetInCU: 0x2D8, offset: 0x2F848, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0x142C, symSize: 0x14 }
- { offsetInCU: 0x318, offset: 0x2F888, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH9hashValueSivgTW', symObjAddr: 0x9C, symBinAddr: 0x1440, symSize: 0x44 }
- { offsetInCU: 0x3FB, offset: 0x2F96B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x1484, symSize: 0x28 }
- { offsetInCU: 0x484, offset: 0x2F9F4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASQWb', symObjAddr: 0x1C4, symBinAddr: 0x1568, symSize: 0x4 }
- { offsetInCU: 0x498, offset: 0x2FA08, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOACSQAAWl', symObjAddr: 0x1C8, symBinAddr: 0x156C, symSize: 0x44 }
- { offsetInCU: 0x4AC, offset: 0x2FA1C, size: 0x8, addend: 0x0, symName: ___swift_memcpy3_1, symObjAddr: 0x20C, symBinAddr: 0x15B0, symSize: 0x14 }
- { offsetInCU: 0x4C0, offset: 0x2FA30, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwet', symObjAddr: 0x224, symBinAddr: 0x15C4, symSize: 0x74 }
- { offsetInCU: 0x4D4, offset: 0x2FA44, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwst', symObjAddr: 0x298, symBinAddr: 0x1638, symSize: 0x8C }
- { offsetInCU: 0x4E8, offset: 0x2FA58, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwug', symObjAddr: 0x324, symBinAddr: 0x16C4, symSize: 0x18 }
- { offsetInCU: 0x4FC, offset: 0x2FA6C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwup', symObjAddr: 0x33C, symBinAddr: 0x16DC, symSize: 0x4 }
- { offsetInCU: 0x510, offset: 0x2FA80, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwui', symObjAddr: 0x340, symBinAddr: 0x16E0, symSize: 0x18 }
- { offsetInCU: 0x524, offset: 0x2FA94, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOMa', symObjAddr: 0x358, symBinAddr: 0x16F8, symSize: 0x10 }
- { offsetInCU: 0x538, offset: 0x2FAA8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwet', symObjAddr: 0x374, symBinAddr: 0x1708, symSize: 0x90 }
- { offsetInCU: 0x54C, offset: 0x2FABC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwst', symObjAddr: 0x404, symBinAddr: 0x1798, symSize: 0xBC }
- { offsetInCU: 0x560, offset: 0x2FAD0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwug', symObjAddr: 0x4C0, symBinAddr: 0x1854, symSize: 0x8 }
- { offsetInCU: 0x574, offset: 0x2FAE4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwup', symObjAddr: 0x4C8, symBinAddr: 0x185C, symSize: 0x4 }
- { offsetInCU: 0x588, offset: 0x2FAF8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwui', symObjAddr: 0x4CC, symBinAddr: 0x1860, symSize: 0x8 }
- { offsetInCU: 0x59C, offset: 0x2FB0C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOMa', symObjAddr: 0x4D4, symBinAddr: 0x1868, symSize: 0x10 }
- { offsetInCU: 0x5FA, offset: 0x2FB6A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x108, symBinAddr: 0x14AC, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x2FC99, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfC', symObjAddr: 0x0, symBinAddr: 0x1878, symSize: 0xD0 }
- { offsetInCU: 0x99, offset: 0x2FD0B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfC', symObjAddr: 0x0, symBinAddr: 0x1878, symSize: 0xD0 }
- { offsetInCU: 0xEE, offset: 0x2FD60, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfc', symObjAddr: 0xD0, symBinAddr: 0x1948, symSize: 0xB0 }
- { offsetInCU: 0x189, offset: 0x2FDFB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x190, symBinAddr: 0x1A08, symSize: 0xA0 }
- { offsetInCU: 0x1DE, offset: 0x2FE50, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x230, symBinAddr: 0x1AA8, symSize: 0x70 }
- { offsetInCU: 0x22D, offset: 0x2FE9F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x2A0, symBinAddr: 0x1B18, symSize: 0xC }
- { offsetInCU: 0x2A9, offset: 0x2FF1B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC11changeInput5inputyAA4MoveVSgACc_tF', symObjAddr: 0x2AC, symBinAddr: 0x1B24, symSize: 0x38 }
- { offsetInCU: 0x310, offset: 0x2FF82, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKF', symObjAddr: 0x2E4, symBinAddr: 0x1B5C, symSize: 0x2C }
- { offsetInCU: 0x384, offset: 0x2FFF6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY0_', symObjAddr: 0x310, symBinAddr: 0x1B88, symSize: 0x108 }
- { offsetInCU: 0x507, offset: 0x30179, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTQ1_', symObjAddr: 0x418, symBinAddr: 0x1C90, symSize: 0x70 }
- { offsetInCU: 0x5BF, offset: 0x30231, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY2_', symObjAddr: 0x488, symBinAddr: 0x1D00, symSize: 0x100 }
- { offsetInCU: 0x6AE, offset: 0x30320, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY3_', symObjAddr: 0x588, symBinAddr: 0x1E00, symSize: 0x40 }
- { offsetInCU: 0x70C, offset: 0x3037E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfd', symObjAddr: 0x5D0, symBinAddr: 0x1E48, symSize: 0x2C }
- { offsetInCU: 0x75D, offset: 0x303CF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfD', symObjAddr: 0x5FC, symBinAddr: 0x1E74, symSize: 0x34 }
- { offsetInCU: 0x87E, offset: 0x304F0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCAA4MoveVSgIeggr_SgWOe', symObjAddr: 0x180, symBinAddr: 0x19F8, symSize: 0x10 }
- { offsetInCU: 0x92C, offset: 0x3059E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfE', symObjAddr: 0x5C8, symBinAddr: 0x1E40, symSize: 0x8 }
- { offsetInCU: 0x959, offset: 0x305CB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCMa', symObjAddr: 0x630, symBinAddr: 0x1EA8, symSize: 0x20 }
- { offsetInCU: 0x4F, offset: 0x3076A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11initialGridSaySayAA4CellVGGvpZ', symObjAddr: 0x29A60, symBinAddr: 0x19B40, symSize: 0x0 }
- { offsetInCU: 0x69, offset: 0x30784, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV6pieces33_DFC7A53241A8EF79AF2B79A48A65C265LLShyAA5PieceVGvpZ', symObjAddr: 0x6D30, symBinAddr: 0x18720, symSize: 0x0 }
- { offsetInCU: 0xD7, offset: 0x307F2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZ', symObjAddr: 0x6D38, symBinAddr: 0x18728, symSize: 0x0 }
- { offsetInCU: 0xF1, offset: 0x3080C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15iteratingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardV_S2itKcGvpZ', symObjAddr: 0x6D40, symBinAddr: 0x18730, symSize: 0x0 }
- { offsetInCU: 0x10B, offset: 0x30826, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12endingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZ', symObjAddr: 0x6D48, symBinAddr: 0x18738, symSize: 0x0 }
- { offsetInCU: 0x125, offset: 0x30840, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16placesByCellTypeSDyAA0iJ0OSaySi3row_Si3coltGGvpZ', symObjAddr: 0x29A68, symBinAddr: 0x19B48, symSize: 0x0 }
- { offsetInCU: 0x284, offset: 0x3099F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0x1F94, symSize: 0x2DC }
- { offsetInCU: 0xA99, offset: 0x311B4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11createBoardAA0H0VyFZ', symObjAddr: 0x2DC, symBinAddr: 0x2270, symSize: 0x78 }
- { offsetInCU: 0xAD7, offset: 0x311F2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10checkBoardyyAA0H0VKFZ', symObjAddr: 0x354, symBinAddr: 0x22E8, symSize: 0x14 }
- { offsetInCU: 0xB01, offset: 0x3121C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZfiyAGcfU_', symObjAddr: 0x3AC, symBinAddr: 0x2340, symSize: 0x30 }
- { offsetInCU: 0xB41, offset: 0x3125C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZfiyAGcfU0_', symObjAddr: 0x3DC, symBinAddr: 0x2370, symSize: 0x78 }
- { offsetInCU: 0xB93, offset: 0x312AE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVACycfC', symObjAddr: 0x6A8, symBinAddr: 0x263C, symSize: 0x30 }
- { offsetInCU: 0xBD8, offset: 0x312F3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10occurences8historicACSDyAA5BoardVSiG_SayAA4MoveVGtcfC', symObjAddr: 0x6D8, symBinAddr: 0x266C, symSize: 0x54 }
- { offsetInCU: 0xC3D, offset: 0x31358, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV19findAuthorizedMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL5boardSayAA4MoveVGAA5BoardV_tF', symObjAddr: 0x72C, symBinAddr: 0x26C0, symSize: 0x458 }
- { offsetInCU: 0x15D4, offset: 0x31CEF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12findRatMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0xB84, symBinAddr: 0x2B18, symSize: 0x62C }
- { offsetInCU: 0x1FE8, offset: 0x32703, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV17findElephantMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x11B0, symBinAddr: 0x3144, symSize: 0x5F8 }
- { offsetInCU: 0x295A, offset: 0x33075, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16findDefaultMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x17A8, symBinAddr: 0x373C, symSize: 0x6C4 }
- { offsetInCU: 0x340F, offset: 0x33B2A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV21findTigerAndLionMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x1E6C, symBinAddr: 0x3E00, symSize: 0x44C }
- { offsetInCU: 0x3A6C, offset: 0x34187, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV20findDirectNeighbours33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x22B8, symBinAddr: 0x424C, symSize: 0x300 }
- { offsetInCU: 0x3FE8, offset: 0x34703, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV26findTigerAndLionNeighbours33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x25B8, symBinAddr: 0x454C, symSize: 0x56C }
- { offsetInCU: 0x491C, offset: 0x35037, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtF', symObjAddr: 0x2B24, symBinAddr: 0x4AB8, symSize: 0x12C }
- { offsetInCU: 0x4AEC, offset: 0x35207, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itF', symObjAddr: 0x2C50, symBinAddr: 0x4BE4, symSize: 0x140 }
- { offsetInCU: 0x4D56, offset: 0x35471, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11isMoveValid7onBoard7fromRow13andFromColumn02toM00n2ToP0SbAA0K0V_S4itF', symObjAddr: 0x2D90, symBinAddr: 0x4D24, symSize: 0xA0 }
- { offsetInCU: 0x4E40, offset: 0x3555B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11isMoveValid7onBoard04withH0SbAA0K0V_AA0H0VtF', symObjAddr: 0x2E30, symBinAddr: 0x4DC4, symSize: 0x104 }
- { offsetInCU: 0x50CF, offset: 0x357EA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV13getNextPlayerAA5OwnerOyF', symObjAddr: 0x2F34, symBinAddr: 0x4EC8, symSize: 0x3C }
- { offsetInCU: 0x51E0, offset: 0x358FB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10isGameOver9withBoard16andLastRowPlayed0lM12ColumnPlayerSb_AA6ResultOtAA0K0V_S2itF', symObjAddr: 0x2F70, symBinAddr: 0x4F04, symSize: 0x188 }
- { offsetInCU: 0x537E, offset: 0x35A99, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10playedMove_15onStartingBoard012andResultingK0yAA0H0V_AA0K0VAJtKF', symObjAddr: 0x30F8, symBinAddr: 0x508C, symSize: 0x424 }
- { offsetInCU: 0x5879, offset: 0x35F94, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10occurencesSDyAA5BoardVSiGvg', symObjAddr: 0x351C, symBinAddr: 0x54B0, symSize: 0x8 }
- { offsetInCU: 0x588D, offset: 0x35FA8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8historicSayAA4MoveVGvg', symObjAddr: 0x3524, symBinAddr: 0x54B8, symSize: 0x8 }
- { offsetInCU: 0x58BF, offset: 0x35FDA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11createBoardAA0H0VyFZTW', symObjAddr: 0x352C, symBinAddr: 0x54C0, symSize: 0x78 }
- { offsetInCU: 0x590C, offset: 0x36027, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10checkBoardyyAA0H0VKFZTW', symObjAddr: 0x35A4, symBinAddr: 0x5538, symSize: 0x14 }
- { offsetInCU: 0x5944, offset: 0x3605F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP13getNextPlayerAA5OwnerOyFTW', symObjAddr: 0x35B8, symBinAddr: 0x554C, symSize: 0x4 }
- { offsetInCU: 0x5960, offset: 0x3607B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtFTW', symObjAddr: 0x35BC, symBinAddr: 0x5550, symSize: 0x14 }
- { offsetInCU: 0x597C, offset: 0x36097, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itFTW', symObjAddr: 0x35D0, symBinAddr: 0x5564, symSize: 0x14 }
- { offsetInCU: 0x5998, offset: 0x360B3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11isMoveValid7onBoard7fromRow13andFromColumn02toM00n2ToP0SbAA0K0V_S4itFTW', symObjAddr: 0x35E4, symBinAddr: 0x5578, symSize: 0x4 }
- { offsetInCU: 0x59B4, offset: 0x360CF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11isMoveValid7onBoard04withH0SbAA0K0V_AA0H0VtFTW', symObjAddr: 0x35E8, symBinAddr: 0x557C, symSize: 0x4 }
- { offsetInCU: 0x59D0, offset: 0x360EB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10isGameOver9withBoard16andLastRowPlayed0lM12ColumnPlayerSb_AA6ResultOtAA0K0V_S2itFTW', symObjAddr: 0x35EC, symBinAddr: 0x5580, symSize: 0x4 }
- { offsetInCU: 0x59EC, offset: 0x36107, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10playedMove_15onStartingBoard012andResultingK0yAA0H0V_AA0K0VALtKFTW', symObjAddr: 0x35F0, symBinAddr: 0x5584, symSize: 0x14 }
- { offsetInCU: 0x5A21, offset: 0x3613C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0x3604, symBinAddr: 0x5598, symSize: 0x8 }
- { offsetInCU: 0x5A41, offset: 0x3615C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0x3604, symBinAddr: 0x5598, symSize: 0x8 }
- { offsetInCU: 0x5A66, offset: 0x36181, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0x360C, symBinAddr: 0x55A0, symSize: 0x8 }
- { offsetInCU: 0x5A86, offset: 0x361A1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0x360C, symBinAddr: 0x55A0, symSize: 0x8 }
- { offsetInCU: 0x5A99, offset: 0x361B4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10checkBoardyyAA0H0VKFZTf4nd_n', symObjAddr: 0x5710, symBinAddr: 0x76A4, symSize: 0x28C }
- { offsetInCU: 0x5E0F, offset: 0x3652A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV20initPlacesByCellType33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardVFZTf4nd_n', symObjAddr: 0x599C, symBinAddr: 0x7930, symSize: 0x3A8 }
- { offsetInCU: 0x629F, offset: 0x369BA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV23checkCellsByTypeIterate33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x5D44, symBinAddr: 0x7CD8, symSize: 0x15C }
- { offsetInCU: 0x6492, offset: 0x36BAD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV18checkPiecesIterate33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x5EA0, symBinAddr: 0x7E34, symSize: 0x178 }
- { offsetInCU: 0x6572, offset: 0x36C8D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15checkWaterCells33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x6018, symBinAddr: 0x7FAC, symSize: 0xDC }
- { offsetInCU: 0x6689, offset: 0x36DA4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV6pieces33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x368, symBinAddr: 0x22FC, symSize: 0x14 }
- { offsetInCU: 0x66A3, offset: 0x36DBE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x37C, symBinAddr: 0x2310, symSize: 0x30 }
- { offsetInCU: 0x66D9, offset: 0x36DF4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15iteratingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x454, symBinAddr: 0x23E8, symSize: 0x30 }
- { offsetInCU: 0x66F3, offset: 0x36E0E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12endingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x510, symBinAddr: 0x24A4, symSize: 0x14 }
- { offsetInCU: 0x670D, offset: 0x36E28, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16placesByCellType_WZ', symObjAddr: 0x524, symBinAddr: 0x24B8, symSize: 0x24 }
- { offsetInCU: 0x6C29, offset: 0x37344, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8setValue_6forKeyyq_n_xtF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x3614, symBinAddr: 0x55A8, symSize: 0xB0 }
- { offsetInCU: 0x6C9E, offset: 0x373B9, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x36C4, symBinAddr: 0x5658, symSize: 0x70 }
- { offsetInCU: 0x6CCB, offset: 0x373E6, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x3734, symBinAddr: 0x56C8, symSize: 0x3C }
- { offsetInCU: 0x6D0E, offset: 0x37429, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x3770, symBinAddr: 0x5704, symSize: 0x64 }
- { offsetInCU: 0x6D86, offset: 0x374A1, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x37D4, symBinAddr: 0x5768, symSize: 0xE0 }
- { offsetInCU: 0x6EBE, offset: 0x375D9, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x38B4, symBinAddr: 0x5848, symSize: 0x20 }
- { offsetInCU: 0x6EE1, offset: 0x375FC, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5.resume.0', symObjAddr: 0x38D4, symBinAddr: 0x5868, symSize: 0x10 }
- { offsetInCU: 0x6F24, offset: 0x3763F, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV12mutatingFind_8isUniques10_HashTableV6BucketV6bucket_Sb5foundtx_SbtF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x38E4, symBinAddr: 0x5878, symSize: 0xC8 }
- { offsetInCU: 0x6F8C, offset: 0x376A7, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV12mutatingFind_8isUniques10_HashTableV6BucketV6bucket_Sb5foundtx_SbtF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x39AC, symBinAddr: 0x5940, symSize: 0xE0 }
- { offsetInCU: 0x6FE2, offset: 0x376FD, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF14DouShouQiModel5BoardV_TB5', symObjAddr: 0x3A8C, symBinAddr: 0x5A20, symSize: 0x78 }
- { offsetInCU: 0x704F, offset: 0x3776A, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x3B6C, symBinAddr: 0x5B00, symSize: 0x1C0 }
- { offsetInCU: 0x7179, offset: 0x37894, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x3D2C, symBinAddr: 0x5CC0, symSize: 0x54 }
- { offsetInCU: 0x724A, offset: 0x37965, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF14DouShouQiModel5BoardV_TB5', symObjAddr: 0x3D80, symBinAddr: 0x5D14, symSize: 0x260 }
- { offsetInCU: 0x740A, offset: 0x37B25, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x4080, symBinAddr: 0x6014, symSize: 0x1B0 }
- { offsetInCU: 0x748B, offset: 0x37BA6, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF14DouShouQiModel5BoardV_SiTg5', symObjAddr: 0x4230, symBinAddr: 0x61C4, symSize: 0x1C8 }
- { offsetInCU: 0x7525, offset: 0x37C40, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x43F8, symBinAddr: 0x638C, symSize: 0x358 }
- { offsetInCU: 0x76A4, offset: 0x37DBF, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF14DouShouQiModel5BoardV_SiTg5', symObjAddr: 0x4750, symBinAddr: 0x66E4, symSize: 0x344 }
- { offsetInCU: 0x77B7, offset: 0x37ED2, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x4A94, symBinAddr: 0x6A28, symSize: 0x154 }
- { offsetInCU: 0x79C2, offset: 0x380DD, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x4BE8, symBinAddr: 0x6B7C, symSize: 0x180 }
- { offsetInCU: 0x7BD8, offset: 0x382F3, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x4D68, symBinAddr: 0x6CFC, symSize: 0x190 }
- { offsetInCU: 0x7C3C, offset: 0x38357, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x4EF8, symBinAddr: 0x6E8C, symSize: 0x298 }
- { offsetInCU: 0x7E42, offset: 0x3855D, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x5190, symBinAddr: 0x7124, symSize: 0x33C }
- { offsetInCU: 0x8072, offset: 0x3878D, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x54CC, symBinAddr: 0x7460, symSize: 0x1C }
- { offsetInCU: 0x808A, offset: 0x387A5, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x54E8, symBinAddr: 0x747C, symSize: 0x1C }
- { offsetInCU: 0x80D9, offset: 0x387F4, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x5504, symBinAddr: 0x7498, symSize: 0x110 }
- { offsetInCU: 0x8231, offset: 0x3894C, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x5614, symBinAddr: 0x75A8, symSize: 0xFC }
- { offsetInCU: 0x84A2, offset: 0x38BBD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOACs0F0AAWl', symObjAddr: 0x62EC, symBinAddr: 0x8280, symSize: 0x44 }
- { offsetInCU: 0x84B6, offset: 0x38BD1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOACs0G0AAWl', symObjAddr: 0x6330, symBinAddr: 0x82C4, symSize: 0x44 }
- { offsetInCU: 0x84CA, offset: 0x38BE5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwCP', symObjAddr: 0x6374, symBinAddr: 0x8308, symSize: 0x34 }
- { offsetInCU: 0x84DE, offset: 0x38BF9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwxx', symObjAddr: 0x63A8, symBinAddr: 0x833C, symSize: 0x28 }
- { offsetInCU: 0x84F2, offset: 0x38C0D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwcp', symObjAddr: 0x63D0, symBinAddr: 0x8364, symSize: 0x34 }
- { offsetInCU: 0x8506, offset: 0x38C21, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwca', symObjAddr: 0x6404, symBinAddr: 0x8398, symSize: 0x5C }
- { offsetInCU: 0x851A, offset: 0x38C35, size: 0x8, addend: 0x0, symName: ___swift_memcpy16_8, symObjAddr: 0x6460, symBinAddr: 0x83F4, symSize: 0xC }
- { offsetInCU: 0x852E, offset: 0x38C49, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwta', symObjAddr: 0x646C, symBinAddr: 0x8400, symSize: 0x44 }
- { offsetInCU: 0x8542, offset: 0x38C5D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwet', symObjAddr: 0x64B0, symBinAddr: 0x8444, symSize: 0x48 }
- { offsetInCU: 0x8556, offset: 0x38C71, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwst', symObjAddr: 0x64F8, symBinAddr: 0x848C, symSize: 0x3C }
- { offsetInCU: 0x856A, offset: 0x38C85, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVMa', symObjAddr: 0x6534, symBinAddr: 0x84C8, symSize: 0x10 }
- { offsetInCU: 0x857E, offset: 0x38C99, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledName, symObjAddr: 0x6544, symBinAddr: 0x84D8, symSize: 0x40 }
- { offsetInCU: 0x8642, offset: 0x38D5D, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy14DouShouQiModel4MoveVG_s15EmptyCollectionVyANGTg5Tf4nndn_n', symObjAddr: 0x6684, symBinAddr: 0x8618, symSize: 0x178 }
- { offsetInCU: 0x8713, offset: 0x38E2E, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lF14DouShouQiModel4MoveV_s15EmptyCollectionVyAHGTg5Tf4ndn_n', symObjAddr: 0x67FC, symBinAddr: 0x8790, symSize: 0xC0 }
- { offsetInCU: 0x8922, offset: 0x3903D, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x548, symBinAddr: 0x24DC, symSize: 0x4C }
- { offsetInCU: 0x893E, offset: 0x39059, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x594, symBinAddr: 0x2528, symSize: 0x30 }
- { offsetInCU: 0x89E8, offset: 0x39103, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x5C4, symBinAddr: 0x2558, symSize: 0xE4 }
- { offsetInCU: 0x8F60, offset: 0x3967B, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5Tf4gd_n', symObjAddr: 0x60F4, symBinAddr: 0x8088, symSize: 0x100 }
- { offsetInCU: 0x9091, offset: 0x397AC, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel5BoardV_SiTg5Tf4gd_n', symObjAddr: 0x61F4, symBinAddr: 0x8188, symSize: 0xF8 }
- { offsetInCU: 0x91DE, offset: 0x398F9, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel5OwnerO_AC6PlayerCTg5Tf4gd_n', symObjAddr: 0x6584, symBinAddr: 0x8518, symSize: 0x100 }
- { offsetInCU: 0x27, offset: 0x39C38, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV6ofType7ownedBy9withPieceAcA0eG0O_AA5OwnerOAA0K0VSgtcfC', symObjAddr: 0x0, symBinAddr: 0x8C6C, symSize: 0x1C }
- { offsetInCU: 0x4B, offset: 0x39C5C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV6ofType7ownedBy9withPieceAcA0eG0O_AA5OwnerOAA0K0VSgtcfC', symObjAddr: 0x0, symBinAddr: 0x8C6C, symSize: 0x1C }
- { offsetInCU: 0x9A, offset: 0x39CAB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV11descriptionSSvg', symObjAddr: 0x1C, symBinAddr: 0x8C88, symSize: 0xF0 }
- { offsetInCU: 0x1DF, offset: 0x39DF0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV8cellTypeAA0eG0Ovg', symObjAddr: 0x10C, symBinAddr: 0x8D78, symSize: 0xC }
- { offsetInCU: 0x1FD, offset: 0x39E0E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV12initialOwnerAA0G0Ovg', symObjAddr: 0x118, symBinAddr: 0x8D84, symSize: 0xC }
- { offsetInCU: 0x21B, offset: 0x39E2C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvg', symObjAddr: 0x124, symBinAddr: 0x8D90, symSize: 0xC }
- { offsetInCU: 0x239, offset: 0x39E4A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvs', symObjAddr: 0x130, symBinAddr: 0x8D9C, symSize: 0xC }
- { offsetInCU: 0x277, offset: 0x39E88, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvM', symObjAddr: 0x13C, symBinAddr: 0x8DA8, symSize: 0x10 }
- { offsetInCU: 0x2A5, offset: 0x39EB6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvM.resume.0', symObjAddr: 0x14C, symBinAddr: 0x8DB8, symSize: 0x4 }
- { offsetInCU: 0x2D0, offset: 0x39EE1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV2eeoiySbAC_ACtFZ', symObjAddr: 0x150, symBinAddr: 0x8DBC, symSize: 0x4 }
- { offsetInCU: 0x2E4, offset: 0x39EF5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x154, symBinAddr: 0x8DC0, symSize: 0x4 }
- { offsetInCU: 0x30F, offset: 0x39F20, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x158, symBinAddr: 0x8DC4, symSize: 0x4 }
- { offsetInCU: 0x32F, offset: 0x39F40, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x158, symBinAddr: 0x8DC4, symSize: 0x4 }
- { offsetInCU: 0x340, offset: 0x39F51, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x15C, symBinAddr: 0x8DC8, symSize: 0x58 }
- { offsetInCU: 0x3B4, offset: 0x39FC5, size: 0x8, addend: 0x0, symName: ___swift_memcpy4_1, symObjAddr: 0x1B4, symBinAddr: 0x8E20, symSize: 0xC }
- { offsetInCU: 0x3C8, offset: 0x39FD9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVwet', symObjAddr: 0x1C4, symBinAddr: 0x8E2C, symSize: 0x44 }
- { offsetInCU: 0x3DC, offset: 0x39FED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVwst', symObjAddr: 0x208, symBinAddr: 0x8E70, symSize: 0x40 }
- { offsetInCU: 0x3F0, offset: 0x3A001, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVMa', symObjAddr: 0x248, symBinAddr: 0x8EB0, symSize: 0x10 }
- { offsetInCU: 0x2B, offset: 0x3A10C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0x8EC0, symSize: 0x1A4 }
- { offsetInCU: 0x4F, offset: 0x3A130, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGridSaySayAA4CellVGGvpZ', symObjAddr: 0xB3D0, symBinAddr: 0x19B50, symSize: 0x0 }
- { offsetInCU: 0x1A2, offset: 0x3A283, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0x8EC0, symSize: 0x1A4 }
- { offsetInCU: 0x582, offset: 0x3A663, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11createBoardAA0I0VyFZ', symObjAddr: 0x1A4, symBinAddr: 0x9064, symSize: 0x78 }
- { offsetInCU: 0x5C0, offset: 0x3A6A1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10checkBoardyyAA0I0VKFZ', symObjAddr: 0x21C, symBinAddr: 0x90DC, symSize: 0x14 }
- { offsetInCU: 0x5DB, offset: 0x3A6BC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVACycfC', symObjAddr: 0x230, symBinAddr: 0x90F0, symSize: 0x30 }
- { offsetInCU: 0x61F, offset: 0x3A700, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10occurences8historicACSDyAA5BoardVSiG_SayAA4MoveVGtcfC', symObjAddr: 0x260, symBinAddr: 0x9120, symSize: 0x54 }
- { offsetInCU: 0x683, offset: 0x3A764, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtF', symObjAddr: 0x2B4, symBinAddr: 0x9174, symSize: 0x17C }
- { offsetInCU: 0x99E, offset: 0x3AA7F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itF', symObjAddr: 0x430, symBinAddr: 0x92F0, symSize: 0x29C }
- { offsetInCU: 0xCE8, offset: 0x3ADC9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11isMoveValid7onBoard7fromRow13andFromColumn02toN00o2ToQ0SbAA0L0V_S4itF', symObjAddr: 0x6CC, symBinAddr: 0x958C, symSize: 0xA0 }
- { offsetInCU: 0xDF9, offset: 0x3AEDA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11isMoveValid7onBoard04withI0SbAA0L0V_AA0I0VtF', symObjAddr: 0x76C, symBinAddr: 0x962C, symSize: 0x10C }
- { offsetInCU: 0x1033, offset: 0x3B114, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV13getNextPlayerAA5OwnerOyF', symObjAddr: 0x878, symBinAddr: 0x9738, symSize: 0x3C }
- { offsetInCU: 0x1143, offset: 0x3B224, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10isGameOver9withBoard16andLastRowPlayed0mN12ColumnPlayerSb_AA6ResultOtAA0L0V_S2itF', symObjAddr: 0x8B4, symBinAddr: 0x9774, symSize: 0x11C }
- { offsetInCU: 0x12BB, offset: 0x3B39C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10playedMove_15onStartingBoard012andResultingL0yAA0I0V_AA0L0VAJtKF', symObjAddr: 0x9D0, symBinAddr: 0x9890, symSize: 0x1E4 }
- { offsetInCU: 0x1477, offset: 0x3B558, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10occurencesSDyAA5BoardVSiGvg', symObjAddr: 0xBB4, symBinAddr: 0x9A74, symSize: 0x8 }
- { offsetInCU: 0x148B, offset: 0x3B56C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8historicSayAA4MoveVGvg', symObjAddr: 0xBBC, symBinAddr: 0x9A7C, symSize: 0x8 }
- { offsetInCU: 0x14BD, offset: 0x3B59E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11createBoardAA0I0VyFZTW', symObjAddr: 0xBC4, symBinAddr: 0x9A84, symSize: 0x78 }
- { offsetInCU: 0x150A, offset: 0x3B5EB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10checkBoardyyAA0I0VKFZTW', symObjAddr: 0xC3C, symBinAddr: 0x9AFC, symSize: 0x14 }
- { offsetInCU: 0x1542, offset: 0x3B623, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP13getNextPlayerAA5OwnerOyFTW', symObjAddr: 0xC50, symBinAddr: 0x9B10, symSize: 0x4 }
- { offsetInCU: 0x155E, offset: 0x3B63F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtFTW', symObjAddr: 0xC54, symBinAddr: 0x9B14, symSize: 0x14 }
- { offsetInCU: 0x157A, offset: 0x3B65B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itFTW', symObjAddr: 0xC68, symBinAddr: 0x9B28, symSize: 0x14 }
- { offsetInCU: 0x1596, offset: 0x3B677, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11isMoveValid7onBoard7fromRow13andFromColumn02toN00o2ToQ0SbAA0L0V_S4itFTW', symObjAddr: 0xC7C, symBinAddr: 0x9B3C, symSize: 0x4 }
- { offsetInCU: 0x15B2, offset: 0x3B693, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11isMoveValid7onBoard04withI0SbAA0L0V_AA0I0VtFTW', symObjAddr: 0xC80, symBinAddr: 0x9B40, symSize: 0x4 }
- { offsetInCU: 0x15CE, offset: 0x3B6AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10isGameOver9withBoard16andLastRowPlayed0mN12ColumnPlayerSb_AA6ResultOtAA0L0V_S2itFTW', symObjAddr: 0xC84, symBinAddr: 0x9B44, symSize: 0x18 }
- { offsetInCU: 0x15EA, offset: 0x3B6CB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10playedMove_15onStartingBoard012andResultingL0yAA0I0V_AA0L0VALtKFTW', symObjAddr: 0xC9C, symBinAddr: 0x9B5C, symSize: 0x14 }
- { offsetInCU: 0x161E, offset: 0x3B6FF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0xCB0, symBinAddr: 0x9B70, symSize: 0x8 }
- { offsetInCU: 0x163E, offset: 0x3B71F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0xCB0, symBinAddr: 0x9B70, symSize: 0x8 }
- { offsetInCU: 0x1661, offset: 0x3B742, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0xCB8, symBinAddr: 0x9B78, symSize: 0x8 }
- { offsetInCU: 0x1681, offset: 0x3B762, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0xCB8, symBinAddr: 0x9B78, symSize: 0x8 }
- { offsetInCU: 0x1693, offset: 0x3B774, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV16checkCellsByType33_2B29F97F1EE5509065CD9853A78D42F5LLyyAA5BoardVKFZTf4nd_n', symObjAddr: 0xCC0, symBinAddr: 0x9B80, symSize: 0x144 }
- { offsetInCU: 0x1895, offset: 0x3B976, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11checkPieces33_2B29F97F1EE5509065CD9853A78D42F5LLyyAA5BoardVKFZTf4nd_n', symObjAddr: 0xE04, symBinAddr: 0x9CC4, symSize: 0x220 }
- { offsetInCU: 0x1BFD, offset: 0x3BCDE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10checkBoardyyAA0I0VKFZTf4nd_n', symObjAddr: 0x1024, symBinAddr: 0x9EE4, symSize: 0xB8 }
- { offsetInCU: 0x1E82, offset: 0x3BF63, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwCP', symObjAddr: 0x11A4, symBinAddr: 0x9F9C, symSize: 0x34 }
- { offsetInCU: 0x1E96, offset: 0x3BF77, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwxx', symObjAddr: 0x11D8, symBinAddr: 0x9FD0, symSize: 0x28 }
- { offsetInCU: 0x1EAA, offset: 0x3BF8B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwcp', symObjAddr: 0x1200, symBinAddr: 0x9FF8, symSize: 0x34 }
- { offsetInCU: 0x1EBE, offset: 0x3BF9F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwca', symObjAddr: 0x1234, symBinAddr: 0xA02C, symSize: 0x5C }
- { offsetInCU: 0x1ED2, offset: 0x3BFB3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwta', symObjAddr: 0x129C, symBinAddr: 0xA088, symSize: 0x44 }
- { offsetInCU: 0x1EE6, offset: 0x3BFC7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwet', symObjAddr: 0x12E0, symBinAddr: 0xA0CC, symSize: 0x48 }
- { offsetInCU: 0x1EFA, offset: 0x3BFDB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwst', symObjAddr: 0x1328, symBinAddr: 0xA114, symSize: 0x3C }
- { offsetInCU: 0x1F0E, offset: 0x3BFEF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVMa', symObjAddr: 0x1364, symBinAddr: 0xA150, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x3C377, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0xA1D8, symSize: 0x68 }
- { offsetInCU: 0x7A, offset: 0x3C3A6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCfd', symObjAddr: 0x88, symBinAddr: 0xA260, symSize: 0x24 }
- { offsetInCU: 0x97, offset: 0x3C3C3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC26addPlayedCallbacksListeneryyyAA4MoveVSg_ACtYaKcF', symObjAddr: 0xAC, symBinAddr: 0xA284, symSize: 0xE4 }
- { offsetInCU: 0x1C2, offset: 0x3C4EE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKF', symObjAddr: 0x190, symBinAddr: 0xA368, symSize: 0x28 }
- { offsetInCU: 0x252, offset: 0x3C57E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY0_', symObjAddr: 0x1B8, symBinAddr: 0xA390, symSize: 0x10C }
- { offsetInCU: 0x3DB, offset: 0x3C707, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTQ1_', symObjAddr: 0x2C4, symBinAddr: 0xA49C, symSize: 0x70 }
- { offsetInCU: 0x49A, offset: 0x3C7C6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY2_', symObjAddr: 0x334, symBinAddr: 0xA50C, symSize: 0xFC }
- { offsetInCU: 0x58F, offset: 0x3C8BB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY3_', symObjAddr: 0x430, symBinAddr: 0xA608, symSize: 0x40 }
- { offsetInCU: 0x601, offset: 0x3C92D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC4nameSSvg', symObjAddr: 0x470, symBinAddr: 0xA648, symSize: 0x2C }
- { offsetInCU: 0x630, offset: 0x3C95C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC2idAA5OwnerOvg', symObjAddr: 0x49C, symBinAddr: 0xA674, symSize: 0xC }
- { offsetInCU: 0x693, offset: 0x3C9BF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x4A8, symBinAddr: 0xA680, symSize: 0x98 }
- { offsetInCU: 0x6C8, offset: 0x3C9F4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x540, symBinAddr: 0xA718, symSize: 0xC }
- { offsetInCU: 0x738, offset: 0x3CA64, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCfD', symObjAddr: 0x6F4, symBinAddr: 0xA8CC, symSize: 0x2C }
- { offsetInCU: 0x77C, offset: 0x3CAA8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCMa', symObjAddr: 0x68, symBinAddr: 0xA240, symSize: 0x20 }
- { offsetInCU: 0x883, offset: 0x3CBAF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TR', symObjAddr: 0x54C, symBinAddr: 0xA724, symSize: 0x6C }
- { offsetInCU: 0x8B6, offset: 0x3CBE2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTQ0_', symObjAddr: 0x5B8, symBinAddr: 0xA790, symSize: 0x48 }
- { offsetInCU: 0x904, offset: 0x3CC30, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA', symObjAddr: 0x624, symBinAddr: 0xA7FC, symSize: 0x88 }
- { offsetInCU: 0x934, offset: 0x3CC60, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTATQ0_', symObjAddr: 0x6AC, symBinAddr: 0xA884, symSize: 0x48 }
- { offsetInCU: 0x9FE, offset: 0x3CD2A, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSi3row_Si3colt_Tg5', symObjAddr: 0x82C, symBinAddr: 0xAA04, symSize: 0xFC }
- { offsetInCU: 0xBA1, offset: 0x3CECD, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x968, symBinAddr: 0xAB00, symSize: 0x110 }
- { offsetInCU: 0xD44, offset: 0x3D070, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0xA78, symBinAddr: 0xAC10, symSize: 0xFC }
- { offsetInCU: 0xEF2, offset: 0x3D21E, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSay14DouShouQiModel4CellVG_Tg5', symObjAddr: 0xB74, symBinAddr: 0xAD0C, symSize: 0x128 }
- { offsetInCU: 0x27, offset: 0x3D541, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP7_domainSSvgTW', symObjAddr: 0x0, symBinAddr: 0xAFB4, symSize: 0x4 }
- { offsetInCU: 0x3F, offset: 0x3D559, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwCP', symObjAddr: 0x10, symBinAddr: 0xAFC4, symSize: 0x48 }
- { offsetInCU: 0x53, offset: 0x3D56D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwxx', symObjAddr: 0x58, symBinAddr: 0xB00C, symSize: 0x18 }
- { offsetInCU: 0x67, offset: 0x3D581, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwcp', symObjAddr: 0x70, symBinAddr: 0xB024, symSize: 0x48 }
- { offsetInCU: 0x7B, offset: 0x3D595, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwca', symObjAddr: 0xB8, symBinAddr: 0xB06C, symSize: 0xA0 }
- { offsetInCU: 0x8F, offset: 0x3D5A9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwta', symObjAddr: 0x164, symBinAddr: 0xB10C, symSize: 0x60 }
- { offsetInCU: 0xA3, offset: 0x3D5BD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwet', symObjAddr: 0x1C4, symBinAddr: 0xB16C, symSize: 0x58 }
- { offsetInCU: 0xB7, offset: 0x3D5D1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwst', symObjAddr: 0x21C, symBinAddr: 0xB1C4, symSize: 0x54 }
- { offsetInCU: 0xCB, offset: 0x3D5E5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwug', symObjAddr: 0x270, symBinAddr: 0xB218, symSize: 0x18 }
- { offsetInCU: 0xDF, offset: 0x3D5F9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwup', symObjAddr: 0x288, symBinAddr: 0xB230, symSize: 0x4 }
- { offsetInCU: 0xF3, offset: 0x3D60D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwui', symObjAddr: 0x28C, symBinAddr: 0xB234, symSize: 0x20 }
- { offsetInCU: 0x107, offset: 0x3D621, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOMa', symObjAddr: 0x2AC, symBinAddr: 0xB254, symSize: 0x10 }
- { offsetInCU: 0x12C, offset: 0x3D646, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP7_domainSSvgTW', symObjAddr: 0x0, symBinAddr: 0xAFB4, symSize: 0x4 }
- { offsetInCU: 0x148, offset: 0x3D662, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP5_codeSivgTW', symObjAddr: 0x4, symBinAddr: 0xAFB8, symSize: 0x4 }
- { offsetInCU: 0x164, offset: 0x3D67E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP9_userInfoyXlSgvgTW', symObjAddr: 0x8, symBinAddr: 0xAFBC, symSize: 0x4 }
- { offsetInCU: 0x180, offset: 0x3D69A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0xC, symBinAddr: 0xAFC0, symSize: 0x4 }
- { offsetInCU: 0x27, offset: 0x3D72E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x0, symBinAddr: 0xB264, symSize: 0x28 }
- { offsetInCU: 0x52, offset: 0x3D759, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x0, symBinAddr: 0xB264, symSize: 0x28 }
- { offsetInCU: 0xC5, offset: 0x3D7CC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY0_', symObjAddr: 0x28, symBinAddr: 0xB28C, symSize: 0x1B4 }
- { offsetInCU: 0x3A6, offset: 0x3DAAD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTQ1_', symObjAddr: 0x1DC, symBinAddr: 0xB440, symSize: 0x70 }
- { offsetInCU: 0x4A7, offset: 0x3DBAE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY2_', symObjAddr: 0x24C, symBinAddr: 0xB4B0, symSize: 0x104 }
- { offsetInCU: 0x5DD, offset: 0x3DCE4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY3_', symObjAddr: 0x350, symBinAddr: 0xB5B4, symSize: 0x4C }
- { offsetInCU: 0x6C4, offset: 0x3DDCB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x3C0, symBinAddr: 0xB624, symSize: 0x9C }
- { offsetInCU: 0x71B, offset: 0x3DE22, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x45C, symBinAddr: 0xB6C0, symSize: 0x6C }
- { offsetInCU: 0x76C, offset: 0x3DE73, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCfd', symObjAddr: 0x4C8, symBinAddr: 0xB72C, symSize: 0x24 }
- { offsetInCU: 0x7CB, offset: 0x3DED2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCfD', symObjAddr: 0x4EC, symBinAddr: 0xB750, symSize: 0x2C }
- { offsetInCU: 0x9ED, offset: 0x3E0F4, size: 0x8, addend: 0x0, symName: ___swift_project_boxed_opaque_existential_1, symObjAddr: 0x39C, symBinAddr: 0xB600, symSize: 0x24 }
- { offsetInCU: 0xA98, offset: 0x3E19F, size: 0x8, addend: 0x0, symName: '_$sSGsE4next10upperBoundqd__qd___ts17FixedWidthIntegerRd__SURd__lFs27SystemRandomNumberGeneratorV_SuTg5', symObjAddr: 0x518, symBinAddr: 0xB77C, symSize: 0x88 }
- { offsetInCU: 0xB39, offset: 0x3E240, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCMa', symObjAddr: 0x5A0, symBinAddr: 0xB804, symSize: 0x20 }
- { offsetInCU: 0x27, offset: 0x3E3EC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO8allCasesSayACGvgZ', symObjAddr: 0x0, symBinAddr: 0xB824, symSize: 0x48 }
- { offsetInCU: 0x6C, offset: 0x3E431, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO8allCasesSayACGvgZ', symObjAddr: 0x0, symBinAddr: 0xB824, symSize: 0x48 }
- { offsetInCU: 0xDB, offset: 0x3E4A0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO2eeoiySbAC_ACtFZ', symObjAddr: 0x88, symBinAddr: 0xB86C, symSize: 0x14 }
- { offsetInCU: 0x10E, offset: 0x3E4D3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO4hash4intoys6HasherVz_tF', symObjAddr: 0x9C, symBinAddr: 0xB880, symSize: 0x28 }
- { offsetInCU: 0x1A4, offset: 0x3E569, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO9hashValueSivg', symObjAddr: 0xC4, symBinAddr: 0xB8A8, symSize: 0x44 }
- { offsetInCU: 0x29E, offset: 0x3E663, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x108, symBinAddr: 0xB8EC, symSize: 0x14 }
- { offsetInCU: 0x2BE, offset: 0x3E683, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x108, symBinAddr: 0xB8EC, symSize: 0x14 }
- { offsetInCU: 0x2FE, offset: 0x3E6C3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x11C, symBinAddr: 0xB900, symSize: 0x44 }
- { offsetInCU: 0x3E1, offset: 0x3E7A6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x160, symBinAddr: 0xB944, symSize: 0x28 }
- { offsetInCU: 0x46D, offset: 0x3E832, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOs12CaseIterableAAsADP8allCases03AllJ0QzvgZTW', symObjAddr: 0x2A4, symBinAddr: 0xBA88, symSize: 0x58 }
- { offsetInCU: 0x509, offset: 0x3E8CE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASQWb', symObjAddr: 0x1C8, symBinAddr: 0xB9AC, symSize: 0x4 }
- { offsetInCU: 0x51D, offset: 0x3E8E2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOACSQAAWl', symObjAddr: 0x1CC, symBinAddr: 0xB9B0, symSize: 0x44 }
- { offsetInCU: 0x531, offset: 0x3E8F6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOs12CaseIterableAA8AllCasessADP_SlWT', symObjAddr: 0x210, symBinAddr: 0xB9F4, symSize: 0x4 }
- { offsetInCU: 0x545, offset: 0x3E90A, size: 0x8, addend: 0x0, symName: '_$sSay14DouShouQiModel8CellTypeOGSayxGSlsWl', symObjAddr: 0x214, symBinAddr: 0xB9F8, symSize: 0x4C }
- { offsetInCU: 0x559, offset: 0x3E91E, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledNameAbstract, symObjAddr: 0x260, symBinAddr: 0xBA44, symSize: 0x44 }
- { offsetInCU: 0x56D, offset: 0x3E932, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwet', symObjAddr: 0x30C, symBinAddr: 0xBAE0, symSize: 0x90 }
- { offsetInCU: 0x581, offset: 0x3E946, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwst', symObjAddr: 0x39C, symBinAddr: 0xBB70, symSize: 0xBC }
- { offsetInCU: 0x595, offset: 0x3E95A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwug', symObjAddr: 0x458, symBinAddr: 0xBC2C, symSize: 0x8 }
- { offsetInCU: 0x5A9, offset: 0x3E96E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwup', symObjAddr: 0x460, symBinAddr: 0xBC34, symSize: 0x4 }
- { offsetInCU: 0x5BD, offset: 0x3E982, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwui', symObjAddr: 0x464, symBinAddr: 0xBC38, symSize: 0x8 }
- { offsetInCU: 0x5D1, offset: 0x3E996, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOMa', symObjAddr: 0x46C, symBinAddr: 0xBC40, symSize: 0x10 }
- { offsetInCU: 0x63E, offset: 0x3EA03, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x188, symBinAddr: 0xB96C, symSize: 0x40 }
- { offsetInCU: 0x2B, offset: 0x3EB43, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV8withGridACSgSaySayAA4CellVGG_tcfC', symObjAddr: 0x0, symBinAddr: 0xBC50, symSize: 0x68 }
- { offsetInCU: 0xA6, offset: 0x3EBBE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV8withGridACSgSaySayAA4CellVGG_tcfC', symObjAddr: 0x0, symBinAddr: 0xBC50, symSize: 0x68 }
- { offsetInCU: 0x2B0, offset: 0x3EDC8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11countPieces2ofSiAA5OwnerO_tF', symObjAddr: 0x68, symBinAddr: 0xBCB8, symSize: 0x1C0 }
- { offsetInCU: 0x583, offset: 0x3F09B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV4hash4intoys6HasherVz_tF', symObjAddr: 0x228, symBinAddr: 0xBE78, symSize: 0xD0 }
- { offsetInCU: 0x7F1, offset: 0x3F309, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV6nbRowsSivg', symObjAddr: 0x2F8, symBinAddr: 0xBF48, symSize: 0x8 }
- { offsetInCU: 0x80F, offset: 0x3F327, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV9nbColumnsSivg', symObjAddr: 0x300, symBinAddr: 0xBF50, symSize: 0x8 }
- { offsetInCU: 0x82D, offset: 0x3F345, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV4gridSaySayAA4CellVGGvg', symObjAddr: 0x308, symBinAddr: 0xBF58, symSize: 0x8 }
- { offsetInCU: 0x84B, offset: 0x3F363, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11countPiecesSi04nbOfgI7Player1_Si0higI7Player2tyF', symObjAddr: 0x310, symBinAddr: 0xBF60, symSize: 0xD0 }
- { offsetInCU: 0xA02, offset: 0x3F51A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV6insert5piece5atRow9andColumnAA0E6ResultOAA5PieceV_S2itF', symObjAddr: 0x3E0, symBinAddr: 0xC030, symSize: 0x150 }
- { offsetInCU: 0xC18, offset: 0x3F730, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11removePiece5atRow9andColumnAA0E6ResultOSi_SitF', symObjAddr: 0x530, symBinAddr: 0xC180, symSize: 0x14C }
- { offsetInCU: 0xE35, offset: 0x3F94D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV2eeoiySbAC_ACtFZ', symObjAddr: 0x67C, symBinAddr: 0xC2CC, symSize: 0x28 }
- { offsetInCU: 0xE77, offset: 0x3F98F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV9hashValueSivg', symObjAddr: 0x6A4, symBinAddr: 0xC2F4, symSize: 0x50 }
- { offsetInCU: 0xF03, offset: 0x3FA1B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH9hashValueSivgTW', symObjAddr: 0x6F4, symBinAddr: 0xC344, symSize: 0x50 }
- { offsetInCU: 0xF92, offset: 0x3FAAA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x744, symBinAddr: 0xC394, symSize: 0x4 }
- { offsetInCU: 0xFC0, offset: 0x3FAD8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x794, symBinAddr: 0xC3E4, symSize: 0x28 }
- { offsetInCU: 0x125D, offset: 0x3FD75, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x7BC, symBinAddr: 0xC40C, symSize: 0x14 }
- { offsetInCU: 0x1295, offset: 0x3FDAD, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x7D0, symBinAddr: 0xC420, symSize: 0x14 }
- { offsetInCU: 0x12CD, offset: 0x3FDE5, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSay14DouShouQiModel4CellVG_Tg5', symObjAddr: 0x7E4, symBinAddr: 0xC434, symSize: 0x14 }
- { offsetInCU: 0x1305, offset: 0x3FE1D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASQWb', symObjAddr: 0x9B0, symBinAddr: 0xC600, symSize: 0x4 }
- { offsetInCU: 0x1319, offset: 0x3FE31, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVACSQAAWl', symObjAddr: 0x9B4, symBinAddr: 0xC604, symSize: 0x44 }
- { offsetInCU: 0x132D, offset: 0x3FE45, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwCP', symObjAddr: 0x9F8, symBinAddr: 0xC648, symSize: 0x34 }
- { offsetInCU: 0x1341, offset: 0x3FE59, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwxx', symObjAddr: 0xA2C, symBinAddr: 0xC67C, symSize: 0x8 }
- { offsetInCU: 0x1355, offset: 0x3FE6D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwcp', symObjAddr: 0xA34, symBinAddr: 0xC684, symSize: 0x34 }
- { offsetInCU: 0x1369, offset: 0x3FE81, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwca', symObjAddr: 0xA68, symBinAddr: 0xC6B8, symSize: 0x48 }
- { offsetInCU: 0x137D, offset: 0x3FE95, size: 0x8, addend: 0x0, symName: ___swift_memcpy24_8, symObjAddr: 0xAB0, symBinAddr: 0xC700, symSize: 0x14 }
- { offsetInCU: 0x1391, offset: 0x3FEA9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwta', symObjAddr: 0xAC4, symBinAddr: 0xC714, symSize: 0x38 }
- { offsetInCU: 0x13A5, offset: 0x3FEBD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwet', symObjAddr: 0xAFC, symBinAddr: 0xC74C, symSize: 0x48 }
- { offsetInCU: 0x13B9, offset: 0x3FED1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwst', symObjAddr: 0xB44, symBinAddr: 0xC794, symSize: 0x40 }
- { offsetInCU: 0x13CD, offset: 0x3FEE5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVMa', symObjAddr: 0xB84, symBinAddr: 0xC7D4, symSize: 0x10 }
- { offsetInCU: 0x1532, offset: 0x4004A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x748, symBinAddr: 0xC398, symSize: 0x4C }
- { offsetInCU: 0x1570, offset: 0x40088, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0xC448, symSize: 0x98 }
- { offsetInCU: 0x1590, offset: 0x400A8, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0xC448, symSize: 0x98 }
- { offsetInCU: 0x15A4, offset: 0x400BC, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0xC448, symSize: 0x98 }
- { offsetInCU: 0x15B8, offset: 0x400D0, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0xC448, symSize: 0x98 }
- { offsetInCU: 0x1644, offset: 0x4015C, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZSay14DouShouQiModel4CellVG_Tg5Tf4nnd_n', symObjAddr: 0x890, symBinAddr: 0xC4E0, symSize: 0x120 }
- { offsetInCU: 0x27, offset: 0x403A5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9withOwner9andAnimalAcA0G0O_AA0I0OtcfC', symObjAddr: 0x0, symBinAddr: 0xC7E4, symSize: 0x14 }
- { offsetInCU: 0x46, offset: 0x403C4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9withOwner9andAnimalAcA0G0O_AA0I0OtcfC', symObjAddr: 0x0, symBinAddr: 0xC7E4, symSize: 0x14 }
- { offsetInCU: 0x85, offset: 0x40403, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV11descriptionSSvg', symObjAddr: 0x14, symBinAddr: 0xC7F8, symSize: 0xB4 }
- { offsetInCU: 0x176, offset: 0x404F4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV5ownerAA5OwnerOvg', symObjAddr: 0xC8, symBinAddr: 0xC8AC, symSize: 0xC }
- { offsetInCU: 0x194, offset: 0x40512, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV6animalAA6AnimalOvg', symObjAddr: 0xD4, symBinAddr: 0xC8B8, symSize: 0xC }
- { offsetInCU: 0x1B2, offset: 0x40530, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV4hash4intoys6HasherVz_tF', symObjAddr: 0xE0, symBinAddr: 0xC8C4, symSize: 0x3C }
- { offsetInCU: 0x2E8, offset: 0x40666, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV2eeoiySbAC_ACtFZ', symObjAddr: 0x11C, symBinAddr: 0xC900, symSize: 0x20 }
- { offsetInCU: 0x355, offset: 0x406D3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9hashValueSivg', symObjAddr: 0x13C, symBinAddr: 0xC920, symSize: 0x5C }
- { offsetInCU: 0x4EB, offset: 0x40869, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x198, symBinAddr: 0xC97C, symSize: 0x4 }
- { offsetInCU: 0x516, offset: 0x40894, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH9hashValueSivgTW', symObjAddr: 0x19C, symBinAddr: 0xC980, symSize: 0x5C }
- { offsetInCU: 0x6C9, offset: 0x40A47, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1F8, symBinAddr: 0xC9DC, symSize: 0x3C }
- { offsetInCU: 0x82D, offset: 0x40BAB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x28C, symBinAddr: 0xCA70, symSize: 0x20 }
- { offsetInCU: 0x84D, offset: 0x40BCB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x28C, symBinAddr: 0xCA70, symSize: 0x20 }
- { offsetInCU: 0x949, offset: 0x40CC7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASQWb', symObjAddr: 0x2AC, symBinAddr: 0xCA90, symSize: 0x4 }
- { offsetInCU: 0x95D, offset: 0x40CDB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVACSQAAWl', symObjAddr: 0x2B0, symBinAddr: 0xCA94, symSize: 0x44 }
- { offsetInCU: 0x971, offset: 0x40CEF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVwet', symObjAddr: 0x304, symBinAddr: 0xCAD8, symSize: 0x94 }
- { offsetInCU: 0x985, offset: 0x40D03, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVwst', symObjAddr: 0x398, symBinAddr: 0xCB6C, symSize: 0xBC }
- { offsetInCU: 0x999, offset: 0x40D17, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVMa', symObjAddr: 0x454, symBinAddr: 0xCC28, symSize: 0x10 }
- { offsetInCU: 0xA44, offset: 0x40DC2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x234, symBinAddr: 0xCA18, symSize: 0x58 }
- { offsetInCU: 0x27, offset: 0x40FC1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0xCC38, symSize: 0x4 }
- { offsetInCU: 0x4B, offset: 0x40FE5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0xCC38, symSize: 0x4 }
- { offsetInCU: 0x6E, offset: 0x41008, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x14, symBinAddr: 0xCC4C, symSize: 0x4 }
- { offsetInCU: 0x8E, offset: 0x41028, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x14, symBinAddr: 0xCC4C, symSize: 0x4 }
- { offsetInCU: 0x9F, offset: 0x41039, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x18, symBinAddr: 0xCC50, symSize: 0x118 }
- { offsetInCU: 0x1AE, offset: 0x41148, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwCP', symObjAddr: 0x130, symBinAddr: 0xCD68, symSize: 0x30 }
- { offsetInCU: 0x1C2, offset: 0x4115C, size: 0x8, addend: 0x0, symName: ___swift_memcpy25_8, symObjAddr: 0x164, symBinAddr: 0xCD98, symSize: 0x14 }
- { offsetInCU: 0x1D6, offset: 0x41170, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwet', symObjAddr: 0x178, symBinAddr: 0xCDAC, symSize: 0x48 }
- { offsetInCU: 0x1EA, offset: 0x41184, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwst', symObjAddr: 0x1C0, symBinAddr: 0xCDF4, symSize: 0x48 }
- { offsetInCU: 0x1FE, offset: 0x41198, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwug', symObjAddr: 0x208, symBinAddr: 0xCE3C, symSize: 0x18 }
- { offsetInCU: 0x212, offset: 0x411AC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwup', symObjAddr: 0x220, symBinAddr: 0xCE54, symSize: 0x4 }
- { offsetInCU: 0x226, offset: 0x411C0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwui', symObjAddr: 0x224, symBinAddr: 0xCE58, symSize: 0x1C }
- { offsetInCU: 0x23A, offset: 0x411D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOMa', symObjAddr: 0x240, symBinAddr: 0xCE74, symSize: 0x10 }
- { offsetInCU: 0x25F, offset: 0x411F9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP7_domainSSvgTW', symObjAddr: 0x4, symBinAddr: 0xCC3C, symSize: 0x4 }
- { offsetInCU: 0x27B, offset: 0x41215, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP5_codeSivgTW', symObjAddr: 0x8, symBinAddr: 0xCC40, symSize: 0x4 }
- { offsetInCU: 0x297, offset: 0x41231, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP9_userInfoyXlSgvgTW', symObjAddr: 0xC, symBinAddr: 0xCC44, symSize: 0x4 }
- { offsetInCU: 0x2B3, offset: 0x4124D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0x10, symBinAddr: 0xCC48, symSize: 0x4 }
- { offsetInCU: 0x27, offset: 0x412F6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0xCE84, symSize: 0x14 }
- { offsetInCU: 0x4B, offset: 0x4131A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0xCE84, symSize: 0x14 }
- { offsetInCU: 0x7E, offset: 0x4134D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO17simpleDescriptionSSvg', symObjAddr: 0x14, symBinAddr: 0xCE98, symSize: 0x18 }
- { offsetInCU: 0xA9, offset: 0x41378, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO4hash4intoys6HasherVz_tF', symObjAddr: 0x2C, symBinAddr: 0xCEB0, symSize: 0x28 }
- { offsetInCU: 0x13F, offset: 0x4140E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO9hashValueSivg', symObjAddr: 0x54, symBinAddr: 0xCED8, symSize: 0x44 }
- { offsetInCU: 0x239, offset: 0x41508, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x98, symBinAddr: 0xCF1C, symSize: 0x14 }
- { offsetInCU: 0x259, offset: 0x41528, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x98, symBinAddr: 0xCF1C, symSize: 0x14 }
- { offsetInCU: 0x299, offset: 0x41568, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH9hashValueSivgTW', symObjAddr: 0xAC, symBinAddr: 0xCF30, symSize: 0x44 }
- { offsetInCU: 0x37C, offset: 0x4164B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xF0, symBinAddr: 0xCF74, symSize: 0x28 }
- { offsetInCU: 0x405, offset: 0x416D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASQWb', symObjAddr: 0x158, symBinAddr: 0xCFDC, symSize: 0x4 }
- { offsetInCU: 0x419, offset: 0x416E8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOACSQAAWl', symObjAddr: 0x15C, symBinAddr: 0xCFE0, symSize: 0x44 }
- { offsetInCU: 0x42D, offset: 0x416FC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwet', symObjAddr: 0x1B0, symBinAddr: 0xD024, symSize: 0x90 }
- { offsetInCU: 0x441, offset: 0x41710, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwst', symObjAddr: 0x240, symBinAddr: 0xD0B4, symSize: 0xBC }
- { offsetInCU: 0x455, offset: 0x41724, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwug', symObjAddr: 0x2FC, symBinAddr: 0xD170, symSize: 0x8 }
- { offsetInCU: 0x469, offset: 0x41738, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwup', symObjAddr: 0x304, symBinAddr: 0xD178, symSize: 0x4 }
- { offsetInCU: 0x47D, offset: 0x4174C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwui', symObjAddr: 0x308, symBinAddr: 0xD17C, symSize: 0x8 }
- { offsetInCU: 0x491, offset: 0x41760, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOMa', symObjAddr: 0x310, symBinAddr: 0xD184, symSize: 0x10 }
- { offsetInCU: 0x4E9, offset: 0x417B8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x118, symBinAddr: 0xCF9C, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x418E2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0xD194, symSize: 0x6C }
- { offsetInCU: 0xAC, offset: 0x41967, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0xD194, symSize: 0x6C }
- { offsetInCU: 0xF0, offset: 0x419AB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCfd', symObjAddr: 0x6C, symBinAddr: 0xD200, symSize: 0x24 }
- { offsetInCU: 0x155, offset: 0x41A10, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x90, symBinAddr: 0xD224, symSize: 0x9C }
- { offsetInCU: 0x1BD, offset: 0x41A78, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCfD', symObjAddr: 0x12C, symBinAddr: 0xD2C0, symSize: 0x2C }
- { offsetInCU: 0x217, offset: 0x41AD2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCMa', symObjAddr: 0x158, symBinAddr: 0xD2EC, symSize: 0x20 }
- { offsetInCU: 0x27, offset: 0x41B95, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0xD30C, symSize: 0x4 }
- { offsetInCU: 0x46, offset: 0x41BB4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0xD30C, symSize: 0x4 }
- { offsetInCU: 0x5A, offset: 0x41BC8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2of7fromRow13andFromColumn02toH00i2ToK0AcA5OwnerO_S4itcfC', symObjAddr: 0x4, symBinAddr: 0xD310, symSize: 0x14 }
- { offsetInCU: 0xC1, offset: 0x41C2F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV5ownerAA5OwnerOvg', symObjAddr: 0x18, symBinAddr: 0xD324, symSize: 0xC }
- { offsetInCU: 0xDF, offset: 0x41C4D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV9rowOriginSivg', symObjAddr: 0x24, symBinAddr: 0xD330, symSize: 0x8 }
- { offsetInCU: 0xFD, offset: 0x41C6B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV12columnOriginSivg', symObjAddr: 0x2C, symBinAddr: 0xD338, symSize: 0x8 }
- { offsetInCU: 0x11B, offset: 0x41C89, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV14rowDestinationSivg', symObjAddr: 0x34, symBinAddr: 0xD340, symSize: 0x8 }
- { offsetInCU: 0x139, offset: 0x41CA7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV17columnDestinationSivg', symObjAddr: 0x3C, symBinAddr: 0xD348, symSize: 0x8 }
- { offsetInCU: 0x157, offset: 0x41CC5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV11descriptionSSvg', symObjAddr: 0x44, symBinAddr: 0xD350, symSize: 0x198 }
- { offsetInCU: 0x287, offset: 0x41DF5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x1DC, symBinAddr: 0xD4E8, symSize: 0x4 }
- { offsetInCU: 0x2B2, offset: 0x41E20, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1E0, symBinAddr: 0xD4EC, symSize: 0x4 }
- { offsetInCU: 0x2D2, offset: 0x41E40, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1E0, symBinAddr: 0xD4EC, symSize: 0x4 }
- { offsetInCU: 0x2E3, offset: 0x41E51, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x1E4, symBinAddr: 0xD4F0, symSize: 0x48 }
- { offsetInCU: 0x316, offset: 0x41E84, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwCP', symObjAddr: 0x22C, symBinAddr: 0xD538, symSize: 0x30 }
- { offsetInCU: 0x32A, offset: 0x41E98, size: 0x8, addend: 0x0, symName: ___swift_memcpy40_8, symObjAddr: 0x260, symBinAddr: 0xD568, symSize: 0x14 }
- { offsetInCU: 0x33E, offset: 0x41EAC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwet', symObjAddr: 0x274, symBinAddr: 0xD57C, symSize: 0x44 }
- { offsetInCU: 0x352, offset: 0x41EC0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwst', symObjAddr: 0x2B8, symBinAddr: 0xD5C0, symSize: 0x4C }
- { offsetInCU: 0x366, offset: 0x41ED4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVMa', symObjAddr: 0x304, symBinAddr: 0xD60C, symSize: 0x10 }
- { offsetInCU: 0x27, offset: 0x41FC5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueSivg', symObjAddr: 0x0, symBinAddr: 0xD61C, symSize: 0xC }
- { offsetInCU: 0x4B, offset: 0x41FE9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueSivg', symObjAddr: 0x0, symBinAddr: 0xD61C, symSize: 0xC }
- { offsetInCU: 0x66, offset: 0x42004, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueACSgSi_tcfC', symObjAddr: 0xC, symBinAddr: 0xD628, symSize: 0x18 }
- { offsetInCU: 0xB8, offset: 0x42056, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x130, symBinAddr: 0xD74C, symSize: 0x8 }
- { offsetInCU: 0xD4, offset: 0x42072, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x138, symBinAddr: 0xD754, symSize: 0x10 }
- { offsetInCU: 0xEC, offset: 0x4208A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x138, symBinAddr: 0xD754, symSize: 0x10 }
- { offsetInCU: 0x109, offset: 0x420A7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASQWb', symObjAddr: 0x38, symBinAddr: 0xD654, symSize: 0x4 }
- { offsetInCU: 0x11D, offset: 0x420BB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOACSQAAWl', symObjAddr: 0x3C, symBinAddr: 0xD658, symSize: 0x44 }
- { offsetInCU: 0x147, offset: 0x420E5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwet', symObjAddr: 0x158, symBinAddr: 0xD764, symSize: 0x90 }
- { offsetInCU: 0x15B, offset: 0x420F9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwst', symObjAddr: 0x1E8, symBinAddr: 0xD7F4, symSize: 0xBC }
- { offsetInCU: 0x16F, offset: 0x4210D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwug', symObjAddr: 0x2A4, symBinAddr: 0xD8B0, symSize: 0x8 }
- { offsetInCU: 0x183, offset: 0x42121, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwup', symObjAddr: 0x2AC, symBinAddr: 0xD8B8, symSize: 0x4 }
- { offsetInCU: 0x197, offset: 0x42135, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwui', symObjAddr: 0x2B0, symBinAddr: 0xD8BC, symSize: 0x8 }
- { offsetInCU: 0x1AB, offset: 0x42149, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOMa', symObjAddr: 0x2B8, symBinAddr: 0xD8C4, symSize: 0x10 }
- { offsetInCU: 0x1E5, offset: 0x42183, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x24, symBinAddr: 0xD640, symSize: 0x14 }
- { offsetInCU: 0x276, offset: 0x42214, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH9hashValueSivgTW', symObjAddr: 0x80, symBinAddr: 0xD69C, symSize: 0x44 }
- { offsetInCU: 0x34E, offset: 0x422EC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xC4, symBinAddr: 0xD6E0, symSize: 0x2C }
- { offsetInCU: 0x3CA, offset: 0x42368, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xF0, symBinAddr: 0xD70C, symSize: 0x40 }
- { offsetInCU: 0x97, offset: 0x42506, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvg', symObjAddr: 0xBC, symBinAddr: 0xD990, symSize: 0x4C }
- { offsetInCU: 0xE0, offset: 0x4254F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5rulesAA5Rules_pvg', symObjAddr: 0x16C, symBinAddr: 0xDA40, symSize: 0x48 }
- { offsetInCU: 0xFF, offset: 0x4256E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC7playersSDyAA5OwnerOAA6PlayerCGvg', symObjAddr: 0x1F8, symBinAddr: 0xDACC, symSize: 0x8 }
- { offsetInCU: 0x12C, offset: 0x4259B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfC', symObjAddr: 0x200, symBinAddr: 0xDAD4, symSize: 0x64 }
- { offsetInCU: 0x151, offset: 0x425C0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfc', symObjAddr: 0x264, symBinAddr: 0xDB38, symSize: 0x464 }
- { offsetInCU: 0x553, offset: 0x429C2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_', symObjAddr: 0x7B0, symBinAddr: 0xDFDC, symSize: 0x84 }
- { offsetInCU: 0x602, offset: 0x42A71, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TQ0_', symObjAddr: 0x834, symBinAddr: 0xE060, symSize: 0x68 }
- { offsetInCU: 0x69B, offset: 0x42B0A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TY2_', symObjAddr: 0x89C, symBinAddr: 0xE0C8, symSize: 0x1C }
- { offsetInCU: 0x6E0, offset: 0x42B4F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_', symObjAddr: 0x8B8, symBinAddr: 0xE0E4, symSize: 0x84 }
- { offsetInCU: 0x78F, offset: 0x42BFE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TQ0_', symObjAddr: 0x93C, symBinAddr: 0xE168, symSize: 0x68 }
- { offsetInCU: 0x828, offset: 0x42C97, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TY1_', symObjAddr: 0x9A4, symBinAddr: 0xE1D0, symSize: 0xC }
- { offsetInCU: 0x882, offset: 0x42CF1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TY2_', symObjAddr: 0x9B0, symBinAddr: 0xE1DC, symSize: 0x1C }
- { offsetInCU: 0x8C7, offset: 0x42D36, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withBoard8andRules0H7Player10H7Player2AcA0G0V_AA0I0_pAA6PlayerCALtKcfC', symObjAddr: 0x9CC, symBinAddr: 0xE1F8, symSize: 0x6C }
- { offsetInCU: 0x8EC, offset: 0x42D5B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withBoard8andRules0H7Player10H7Player2AcA0G0V_AA0I0_pAA6PlayerCALtKcfc', symObjAddr: 0xA38, symBinAddr: 0xE264, symSize: 0x2C4 }
- { offsetInCU: 0x9E9, offset: 0x42E58, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE15StartedListeneryyyAA5BoardVcF', symObjAddr: 0xCFC, symBinAddr: 0xE528, symSize: 0xD4 }
- { offsetInCU: 0xB14, offset: 0x42F83, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC25addPlayerNotifiedListeneryyyAA5BoardV_AA0G0CtYaKcF', symObjAddr: 0xDD0, symBinAddr: 0xE5FC, symSize: 0xD4 }
- { offsetInCU: 0xC3F, offset: 0x430AE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE15ChangedListeneryyyACYacF', symObjAddr: 0xF58, symBinAddr: 0xE784, symSize: 0xD4 }
- { offsetInCU: 0xD6A, offset: 0x431D9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE12OverListeneryyyAA5BoardV_AA6ResultOAA6PlayerCSgtcF', symObjAddr: 0x108C, symBinAddr: 0xE8B8, symSize: 0xD4 }
- { offsetInCU: 0xE95, offset: 0x43304, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC30addMoveChosenCallbacksListeneryyyAA5BoardV_AA0G0VAA6PlayerCtcF', symObjAddr: 0x1160, symBinAddr: 0xE98C, symSize: 0xD4 }
- { offsetInCU: 0xFC0, offset: 0x4342F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC31addInvalidMoveCallbacksListeneryyyAA5BoardV_AA0H0VAA6PlayerCSbtcF', symObjAddr: 0x1234, symBinAddr: 0xEA60, symSize: 0xD4 }
- { offsetInCU: 0x10EB, offset: 0x4355A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC23addBoardChangedListeneryyyAA0G0VcF', symObjAddr: 0x1308, symBinAddr: 0xEB34, symSize: 0xD4 }
- { offsetInCU: 0x1216, offset: 0x43685, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC23addPieceRemovedListeneryyySi_SiAA0G0VtcF', symObjAddr: 0x13DC, symBinAddr: 0xEC08, symSize: 0xD4 }
- { offsetInCU: 0x135F, offset: 0x437CE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC18notifyPieceRemoved33_4E9958627B7DCD90B6D32369387417C3LLyySi_SiAA0G0VtF', symObjAddr: 0x14B0, symBinAddr: 0xECDC, symSize: 0xC8 }
- { offsetInCU: 0x150C, offset: 0x4397B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKF', symObjAddr: 0x1578, symBinAddr: 0xEDA4, symSize: 0x28 }
- { offsetInCU: 0x1914, offset: 0x43D83, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY0_', symObjAddr: 0x15A0, symBinAddr: 0xEDCC, symSize: 0x9E8 }
- { offsetInCU: 0x267D, offset: 0x44AEC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTQ1_', symObjAddr: 0x1F88, symBinAddr: 0xF7B4, symSize: 0x60 }
- { offsetInCU: 0x27B0, offset: 0x44C1F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY2_', symObjAddr: 0x1FE8, symBinAddr: 0xF814, symSize: 0x220 }
- { offsetInCU: 0x2AB9, offset: 0x44F28, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTQ3_', symObjAddr: 0x2208, symBinAddr: 0xFA34, symSize: 0x70 }
- { offsetInCU: 0x2BB2, offset: 0x45021, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY4_', symObjAddr: 0x2278, symBinAddr: 0xFAA4, symSize: 0x10C }
- { offsetInCU: 0x2CE1, offset: 0x45150, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY5_', symObjAddr: 0x2384, symBinAddr: 0xFBB0, symSize: 0x5C }
- { offsetInCU: 0x2D8F, offset: 0x451FE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC6isOverSbvg', symObjAddr: 0x23E0, symBinAddr: 0xFC0C, symSize: 0x30 }
- { offsetInCU: 0x2DAC, offset: 0x4521B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKF', symObjAddr: 0x2410, symBinAddr: 0xFC3C, symSize: 0x18 }
- { offsetInCU: 0x2E63, offset: 0x452D2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY0_', symObjAddr: 0x2428, symBinAddr: 0xFC54, symSize: 0x348 }
- { offsetInCU: 0x3351, offset: 0x457C0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTQ1_', symObjAddr: 0x2770, symBinAddr: 0xFF9C, symSize: 0x60 }
- { offsetInCU: 0x33ED, offset: 0x4585C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY2_', symObjAddr: 0x27D0, symBinAddr: 0xFFFC, symSize: 0x210 }
- { offsetInCU: 0x3666, offset: 0x45AD5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTQ3_', symObjAddr: 0x29E0, symBinAddr: 0x1020C, symSize: 0x70 }
- { offsetInCU: 0x370F, offset: 0x45B7E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY4_', symObjAddr: 0x2A50, symBinAddr: 0x1027C, symSize: 0x104 }
- { offsetInCU: 0x37EF, offset: 0x45C5E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY5_', symObjAddr: 0x2B54, symBinAddr: 0x10380, symSize: 0x5C }
- { offsetInCU: 0x383E, offset: 0x45CAD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCfd', symObjAddr: 0x2BB0, symBinAddr: 0x103DC, symSize: 0x6C }
- { offsetInCU: 0x386B, offset: 0x45CDA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCfD', symObjAddr: 0x2C1C, symBinAddr: 0x10448, symSize: 0x1C }
- { offsetInCU: 0x3899, offset: 0x45D08, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvpACTK', symObjAddr: 0x0, symBinAddr: 0xD8D4, symSize: 0x50 }
- { offsetInCU: 0x38CF, offset: 0x45D3E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvpACTk', symObjAddr: 0x50, symBinAddr: 0xD924, symSize: 0x6C }
- { offsetInCU: 0x390F, offset: 0x45D7E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5rulesAA5Rules_pvpACTk', symObjAddr: 0x108, symBinAddr: 0xD9DC, symSize: 0x64 }
- { offsetInCU: 0x3951, offset: 0x45DC0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5Rules_pWOc', symObjAddr: 0x1B4, symBinAddr: 0xDA88, symSize: 0x44 }
- { offsetInCU: 0x3A57, offset: 0x45EC6, size: 0x8, addend: 0x0, symName: ___swift_destroy_boxed_opaque_existential_1, symObjAddr: 0x730, symBinAddr: 0xDF9C, symSize: 0x20 }
- { offsetInCU: 0x3A6B, offset: 0x45EDA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCMa', symObjAddr: 0x750, symBinAddr: 0xDFBC, symSize: 0x20 }
- { offsetInCU: 0x3B93, offset: 0x46002, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TR', symObjAddr: 0xEA4, symBinAddr: 0xE6D0, symSize: 0x6C }
- { offsetInCU: 0x3BC6, offset: 0x46035, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TRTQ0_', symObjAddr: 0xF10, symBinAddr: 0xE73C, symSize: 0x48 }
- { offsetInCU: 0x3C82, offset: 0x460F1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TR', symObjAddr: 0x102C, symBinAddr: 0xE858, symSize: 0x60 }
- { offsetInCU: 0x40E5, offset: 0x46554, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TA', symObjAddr: 0x2C38, symBinAddr: 0x10464, symSize: 0x60 }
- { offsetInCU: 0x4115, offset: 0x46584, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TA', symObjAddr: 0x2D44, symBinAddr: 0x104E8, symSize: 0x60 }
- { offsetInCU: 0x4145, offset: 0x465B4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA.7', symObjAddr: 0x2DA4, symBinAddr: 0x10548, symSize: 0x88 }
- { offsetInCU: 0x4179, offset: 0x465E8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVIegn_ACytIegnr_TRTA', symObjAddr: 0x2E2C, symBinAddr: 0x105D0, symSize: 0x20 }
- { offsetInCU: 0x41A9, offset: 0x46618, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TRTA', symObjAddr: 0x2E4C, symBinAddr: 0x105F0, symSize: 0x88 }
- { offsetInCU: 0x41D9, offset: 0x46648, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TRTA', symObjAddr: 0x2ED4, symBinAddr: 0x10678, symSize: 0x80 }
- { offsetInCU: 0x4209, offset: 0x46678, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TRTATQ0_', symObjAddr: 0x2F54, symBinAddr: 0x106F8, symSize: 0x48 }
- { offsetInCU: 0x4265, offset: 0x466D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6ResultOAA6PlayerCSgIegnng_AceHytIegnnnr_TRTA', symObjAddr: 0x2F9C, symBinAddr: 0x10740, symSize: 0x24 }
- { offsetInCU: 0x4299, offset: 0x46708, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA4MoveVAA6PlayerCIegnng_AceGytIegnnnr_TRTA', symObjAddr: 0x2FC0, symBinAddr: 0x10764, symSize: 0x24 }
- { offsetInCU: 0x42CD, offset: 0x4673C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA4MoveVAA6PlayerCSbIegnngy_AceGSbytIegnnnnr_TRTA', symObjAddr: 0x2FE4, symBinAddr: 0x10788, symSize: 0x28 }
- { offsetInCU: 0x4301, offset: 0x46770, size: 0x8, addend: 0x0, symName: '_$sS2i14DouShouQiModel5PieceVIegyyn_S2iACytIegnnnr_TRTA', symObjAddr: 0x300C, symBinAddr: 0x107B0, symSize: 0x28 }
- { offsetInCU: 0x432A, offset: 0x46799, size: 0x8, addend: 0x0, symName: ___swift_mutable_project_boxed_opaque_existential_1, symObjAddr: 0x3034, symBinAddr: 0x107D8, symSize: 0x28 }
- { offsetInCU: 0x433E, offset: 0x467AD, size: 0x8, addend: 0x0, symName: ___swift_assign_boxed_opaque_existential_1, symObjAddr: 0x3308, symBinAddr: 0x10AAC, symSize: 0x168 }
...

@ -1,486 +0,0 @@
---
triple: 'x86_64-apple-darwin'
binary-path: '/Users/marcchevaldonne/Library/Developer/Xcode/DerivedData/DouShouQiModel-bzzvovsrfmbhuydeirorjmljgtyf/Build/Intermediates.noindex/ArchiveIntermediates/DouShouQiModel/InstallationBuildProductsLocation/Library/Frameworks/DouShouQiModel.framework/DouShouQiModel'
relocations:
- { offsetInCU: 0x34, offset: 0x3013C, size: 0x8, addend: 0x0, symName: _DouShouQiModelVersionString, symObjAddr: 0x0, symBinAddr: 0x14FA0, symSize: 0x0 }
- { offsetInCU: 0x69, offset: 0x30171, size: 0x8, addend: 0x0, symName: _DouShouQiModelVersionNumber, symObjAddr: 0x38, symBinAddr: 0x14FD8, symSize: 0x0 }
- { offsetInCU: 0x27, offset: 0x301AE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x3C20, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x301D2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x3C20, symSize: 0x10 }
- { offsetInCU: 0x6E, offset: 0x301F5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x20, symBinAddr: 0x3C40, symSize: 0x10 }
- { offsetInCU: 0x9F, offset: 0x30226, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x140, symBinAddr: 0x3D60, symSize: 0x40 }
- { offsetInCU: 0xE5, offset: 0x3026C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO2eeoiySbAC_ACtFZ', symObjAddr: 0x10, symBinAddr: 0x3C30, symSize: 0x10 }
- { offsetInCU: 0x114, offset: 0x3029B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO4hash4intoys6HasherVz_tF', symObjAddr: 0x30, symBinAddr: 0x3C50, symSize: 0x20 }
- { offsetInCU: 0x1AA, offset: 0x30331, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO9hashValueSivg', symObjAddr: 0x50, symBinAddr: 0x3C70, symSize: 0x40 }
- { offsetInCU: 0x2A5, offset: 0x3042C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x90, symBinAddr: 0x3CB0, symSize: 0x10 }
- { offsetInCU: 0x2FB, offset: 0x30482, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH9hashValueSivgTW', symObjAddr: 0xA0, symBinAddr: 0x3CC0, symSize: 0x40 }
- { offsetInCU: 0x3DF, offset: 0x30566, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x3D00, symSize: 0x20 }
- { offsetInCU: 0x468, offset: 0x305EF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASQWb', symObjAddr: 0x180, symBinAddr: 0x3DA0, symSize: 0x10 }
- { offsetInCU: 0x47C, offset: 0x30603, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOACSQAAWl', symObjAddr: 0x190, symBinAddr: 0x3DB0, symSize: 0x30 }
- { offsetInCU: 0x490, offset: 0x30617, size: 0x8, addend: 0x0, symName: ___swift_memcpy2_1, symObjAddr: 0x1C0, symBinAddr: 0x3DE0, symSize: 0x10 }
- { offsetInCU: 0x4A4, offset: 0x3062B, size: 0x8, addend: 0x0, symName: ___swift_noop_void_return, symObjAddr: 0x1D0, symBinAddr: 0x3DF0, symSize: 0x10 }
- { offsetInCU: 0x4B8, offset: 0x3063F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwet', symObjAddr: 0x1E0, symBinAddr: 0x3E00, symSize: 0xB0 }
- { offsetInCU: 0x4CC, offset: 0x30653, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwst', symObjAddr: 0x290, symBinAddr: 0x3EB0, symSize: 0xE0 }
- { offsetInCU: 0x4E0, offset: 0x30667, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwug', symObjAddr: 0x370, symBinAddr: 0x3F90, symSize: 0x20 }
- { offsetInCU: 0x4F4, offset: 0x3067B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwup', symObjAddr: 0x390, symBinAddr: 0x3FB0, symSize: 0x10 }
- { offsetInCU: 0x508, offset: 0x3068F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwui', symObjAddr: 0x3A0, symBinAddr: 0x3FC0, symSize: 0x30 }
- { offsetInCU: 0x51C, offset: 0x306A3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOMa', symObjAddr: 0x3D0, symBinAddr: 0x3FF0, symSize: 0x10 }
- { offsetInCU: 0x530, offset: 0x306B7, size: 0x8, addend: 0x0, symName: ___swift_memcpy1_1, symObjAddr: 0x3E0, symBinAddr: 0x4000, symSize: 0x10 }
- { offsetInCU: 0x544, offset: 0x306CB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwet', symObjAddr: 0x3F0, symBinAddr: 0x4010, symSize: 0x80 }
- { offsetInCU: 0x558, offset: 0x306DF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwst', symObjAddr: 0x470, symBinAddr: 0x4090, symSize: 0xD0 }
- { offsetInCU: 0x56C, offset: 0x306F3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwug', symObjAddr: 0x540, symBinAddr: 0x4160, symSize: 0x10 }
- { offsetInCU: 0x580, offset: 0x30707, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwup', symObjAddr: 0x550, symBinAddr: 0x4170, symSize: 0x10 }
- { offsetInCU: 0x594, offset: 0x3071B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwui', symObjAddr: 0x560, symBinAddr: 0x4180, symSize: 0x10 }
- { offsetInCU: 0x5A8, offset: 0x3072F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOMa', symObjAddr: 0x570, symBinAddr: 0x4190, symSize: 0xA }
- { offsetInCU: 0x622, offset: 0x307A9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x100, symBinAddr: 0x3D20, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x308ED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x41A0, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x30911, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x41A0, symSize: 0x10 }
- { offsetInCU: 0x6E, offset: 0x30934, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x20, symBinAddr: 0x41C0, symSize: 0x10 }
- { offsetInCU: 0x9F, offset: 0x30965, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x140, symBinAddr: 0x42E0, symSize: 0x60 }
- { offsetInCU: 0x113, offset: 0x309D9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO2eeoiySbAC_ACtFZ', symObjAddr: 0x10, symBinAddr: 0x41B0, symSize: 0x10 }
- { offsetInCU: 0x142, offset: 0x30A08, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO4hash4intoys6HasherVz_tF', symObjAddr: 0x30, symBinAddr: 0x41D0, symSize: 0x20 }
- { offsetInCU: 0x1D8, offset: 0x30A9E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO9hashValueSivg', symObjAddr: 0x50, symBinAddr: 0x41F0, symSize: 0x40 }
- { offsetInCU: 0x2D3, offset: 0x30B99, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x90, symBinAddr: 0x4230, symSize: 0x10 }
- { offsetInCU: 0x329, offset: 0x30BEF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH9hashValueSivgTW', symObjAddr: 0xA0, symBinAddr: 0x4240, symSize: 0x40 }
- { offsetInCU: 0x40D, offset: 0x30CD3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x4280, symSize: 0x20 }
- { offsetInCU: 0x496, offset: 0x30D5C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASQWb', symObjAddr: 0x1A0, symBinAddr: 0x4340, symSize: 0x10 }
- { offsetInCU: 0x4AA, offset: 0x30D70, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOACSQAAWl', symObjAddr: 0x1B0, symBinAddr: 0x4350, symSize: 0x30 }
- { offsetInCU: 0x4BE, offset: 0x30D84, size: 0x8, addend: 0x0, symName: ___swift_memcpy3_1, symObjAddr: 0x1E0, symBinAddr: 0x4380, symSize: 0x20 }
- { offsetInCU: 0x4D2, offset: 0x30D98, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwet', symObjAddr: 0x210, symBinAddr: 0x43A0, symSize: 0x70 }
- { offsetInCU: 0x4E6, offset: 0x30DAC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwst', symObjAddr: 0x280, symBinAddr: 0x4410, symSize: 0x80 }
- { offsetInCU: 0x4FA, offset: 0x30DC0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwug', symObjAddr: 0x300, symBinAddr: 0x4490, symSize: 0x20 }
- { offsetInCU: 0x50E, offset: 0x30DD4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwup', symObjAddr: 0x320, symBinAddr: 0x44B0, symSize: 0x10 }
- { offsetInCU: 0x522, offset: 0x30DE8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwui', symObjAddr: 0x330, symBinAddr: 0x44C0, symSize: 0x20 }
- { offsetInCU: 0x536, offset: 0x30DFC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOMa', symObjAddr: 0x350, symBinAddr: 0x44E0, symSize: 0x10 }
- { offsetInCU: 0x54A, offset: 0x30E10, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwet', symObjAddr: 0x370, symBinAddr: 0x44F0, symSize: 0x80 }
- { offsetInCU: 0x55E, offset: 0x30E24, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwst', symObjAddr: 0x3F0, symBinAddr: 0x4570, symSize: 0xD0 }
- { offsetInCU: 0x572, offset: 0x30E38, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwug', symObjAddr: 0x4C0, symBinAddr: 0x4640, symSize: 0x10 }
- { offsetInCU: 0x586, offset: 0x30E4C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwup', symObjAddr: 0x4D0, symBinAddr: 0x4650, symSize: 0x10 }
- { offsetInCU: 0x59A, offset: 0x30E60, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwui', symObjAddr: 0x4E0, symBinAddr: 0x4660, symSize: 0x10 }
- { offsetInCU: 0x5AE, offset: 0x30E74, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOMa', symObjAddr: 0x4F0, symBinAddr: 0x4670, symSize: 0xA }
- { offsetInCU: 0x60C, offset: 0x30ED2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x100, symBinAddr: 0x42A0, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x31002, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfC', symObjAddr: 0x0, symBinAddr: 0x4680, symSize: 0xD0 }
- { offsetInCU: 0x99, offset: 0x31074, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfC', symObjAddr: 0x0, symBinAddr: 0x4680, symSize: 0xD0 }
- { offsetInCU: 0x124, offset: 0x310FF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfc', symObjAddr: 0xD0, symBinAddr: 0x4750, symSize: 0xA0 }
- { offsetInCU: 0x1EB, offset: 0x311C6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x190, symBinAddr: 0x4810, symSize: 0xA0 }
- { offsetInCU: 0x276, offset: 0x31251, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x230, symBinAddr: 0x48B0, symSize: 0x70 }
- { offsetInCU: 0x2F3, offset: 0x312CE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x2A0, symBinAddr: 0x4920, symSize: 0x30 }
- { offsetInCU: 0x36F, offset: 0x3134A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC11changeInput5inputyAA4MoveVSgACc_tF', symObjAddr: 0x2D0, symBinAddr: 0x4950, symSize: 0x30 }
- { offsetInCU: 0x3D4, offset: 0x313AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKF', symObjAddr: 0x300, symBinAddr: 0x4980, symSize: 0x50 }
- { offsetInCU: 0x461, offset: 0x3143C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY0_', symObjAddr: 0x350, symBinAddr: 0x49D0, symSize: 0x110 }
- { offsetInCU: 0x5B9, offset: 0x31594, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTQ1_', symObjAddr: 0x460, symBinAddr: 0x4AE0, symSize: 0x80 }
- { offsetInCU: 0x669, offset: 0x31644, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY2_', symObjAddr: 0x4E0, symBinAddr: 0x4B60, symSize: 0x120 }
- { offsetInCU: 0x744, offset: 0x3171F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY3_', symObjAddr: 0x600, symBinAddr: 0x4C80, symSize: 0x50 }
- { offsetInCU: 0x7A2, offset: 0x3177D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfd', symObjAddr: 0x670, symBinAddr: 0x4CF0, symSize: 0x30 }
- { offsetInCU: 0x7F3, offset: 0x317CE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfD', symObjAddr: 0x6A0, symBinAddr: 0x4D20, symSize: 0x40 }
- { offsetInCU: 0x92F, offset: 0x3190A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCAA4MoveVSgIeggr_SgWOe', symObjAddr: 0x170, symBinAddr: 0x47F0, symSize: 0x20 }
- { offsetInCU: 0x9E8, offset: 0x319C3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfE', symObjAddr: 0x650, symBinAddr: 0x4CD0, symSize: 0x20 }
- { offsetInCU: 0xA15, offset: 0x319F0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCMa', symObjAddr: 0x6E0, symBinAddr: 0x4D60, symSize: 0x20 }
- { offsetInCU: 0x4F, offset: 0x31B95, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11initialGridSaySayAA4CellVGGvpZ', symObjAddr: 0x2C500, symBinAddr: 0x1DB40, symSize: 0x0 }
- { offsetInCU: 0x69, offset: 0x31BAF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV6pieces33_DFC7A53241A8EF79AF2B79A48A65C265LLShyAA5PieceVGvpZ', symObjAddr: 0x71E0, symBinAddr: 0x1C720, symSize: 0x0 }
- { offsetInCU: 0xD7, offset: 0x31C1D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZ', symObjAddr: 0x71E8, symBinAddr: 0x1C728, symSize: 0x0 }
- { offsetInCU: 0xF1, offset: 0x31C37, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15iteratingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardV_S2itKcGvpZ', symObjAddr: 0x71F0, symBinAddr: 0x1C730, symSize: 0x0 }
- { offsetInCU: 0x10B, offset: 0x31C51, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12endingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZ', symObjAddr: 0x71F8, symBinAddr: 0x1C738, symSize: 0x0 }
- { offsetInCU: 0x125, offset: 0x31C6B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16placesByCellTypeSDyAA0iJ0OSaySi3row_Si3coltGGvpZ', symObjAddr: 0x2C508, symBinAddr: 0x1DB48, symSize: 0x0 }
- { offsetInCU: 0x2A8, offset: 0x31DEE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0x4E90, symSize: 0x2C0 }
- { offsetInCU: 0xAC6, offset: 0x3260C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11createBoardAA0H0VyFZ', symObjAddr: 0x2C0, symBinAddr: 0x5150, symSize: 0x70 }
- { offsetInCU: 0xB04, offset: 0x3264A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10checkBoardyyAA0H0VKFZ', symObjAddr: 0x330, symBinAddr: 0x51C0, symSize: 0x10 }
- { offsetInCU: 0xB2E, offset: 0x32674, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZfiyAGcfU_', symObjAddr: 0x390, symBinAddr: 0x5220, symSize: 0x30 }
- { offsetInCU: 0xB6E, offset: 0x326B4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZfiyAGcfU0_', symObjAddr: 0x3C0, symBinAddr: 0x5250, symSize: 0x60 }
- { offsetInCU: 0xBC0, offset: 0x32706, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVACycfC', symObjAddr: 0x650, symBinAddr: 0x54E0, symSize: 0x30 }
- { offsetInCU: 0xC05, offset: 0x3274B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10occurences8historicACSDyAA5BoardVSiG_SayAA4MoveVGtcfC', symObjAddr: 0x680, symBinAddr: 0x5510, symSize: 0x50 }
- { offsetInCU: 0xC6A, offset: 0x327B0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV19findAuthorizedMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL5boardSayAA4MoveVGAA5BoardV_tF', symObjAddr: 0x6D0, symBinAddr: 0x5560, symSize: 0x460 }
- { offsetInCU: 0x15D1, offset: 0x33117, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12findRatMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0xB30, symBinAddr: 0x59C0, symSize: 0x740 }
- { offsetInCU: 0x2140, offset: 0x33C86, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV17findElephantMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x1270, symBinAddr: 0x6100, symSize: 0x6D0 }
- { offsetInCU: 0x2BB3, offset: 0x346F9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16findDefaultMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x1940, symBinAddr: 0x67D0, symSize: 0x740 }
- { offsetInCU: 0x3725, offset: 0x3526B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV21findTigerAndLionMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x2080, symBinAddr: 0x6F10, symSize: 0x4C0 }
- { offsetInCU: 0x3DE7, offset: 0x3592D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV20findDirectNeighbours33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x2540, symBinAddr: 0x73D0, symSize: 0x390 }
- { offsetInCU: 0x4327, offset: 0x35E6D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV26findTigerAndLionNeighbours33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x28D0, symBinAddr: 0x7760, symSize: 0x5D0 }
- { offsetInCU: 0x4C67, offset: 0x367AD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtF', symObjAddr: 0x2EA0, symBinAddr: 0x7D30, symSize: 0x140 }
- { offsetInCU: 0x4E34, offset: 0x3697A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itF', symObjAddr: 0x2FE0, symBinAddr: 0x7E70, symSize: 0x150 }
- { offsetInCU: 0x505D, offset: 0x36BA3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11isMoveValid7onBoard7fromRow13andFromColumn02toM00n2ToP0SbAA0K0V_S4itF', symObjAddr: 0x3130, symBinAddr: 0x7FC0, symSize: 0x80 }
- { offsetInCU: 0x512F, offset: 0x36C75, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11isMoveValid7onBoard04withH0SbAA0K0V_AA0H0VtF', symObjAddr: 0x31B0, symBinAddr: 0x8040, symSize: 0xF0 }
- { offsetInCU: 0x539B, offset: 0x36EE1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV13getNextPlayerAA5OwnerOyF', symObjAddr: 0x32A0, symBinAddr: 0x8130, symSize: 0x30 }
- { offsetInCU: 0x5482, offset: 0x36FC8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10isGameOver9withBoard16andLastRowPlayed0lM12ColumnPlayerSb_AA6ResultOtAA0K0V_S2itF', symObjAddr: 0x32D0, symBinAddr: 0x8160, symSize: 0x1B0 }
- { offsetInCU: 0x5622, offset: 0x37168, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10playedMove_15onStartingBoard012andResultingK0yAA0H0V_AA0K0VAJtKF', symObjAddr: 0x3480, symBinAddr: 0x8310, symSize: 0x4F0 }
- { offsetInCU: 0x5B31, offset: 0x37677, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10occurencesSDyAA5BoardVSiGvg', symObjAddr: 0x3970, symBinAddr: 0x8800, symSize: 0x10 }
- { offsetInCU: 0x5B45, offset: 0x3768B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8historicSayAA4MoveVGvg', symObjAddr: 0x3980, symBinAddr: 0x8810, symSize: 0x10 }
- { offsetInCU: 0x5B77, offset: 0x376BD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11createBoardAA0H0VyFZTW', symObjAddr: 0x3990, symBinAddr: 0x8820, symSize: 0x70 }
- { offsetInCU: 0x5BC4, offset: 0x3770A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10checkBoardyyAA0H0VKFZTW', symObjAddr: 0x3A00, symBinAddr: 0x8890, symSize: 0x10 }
- { offsetInCU: 0x5BFC, offset: 0x37742, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP13getNextPlayerAA5OwnerOyFTW', symObjAddr: 0x3A10, symBinAddr: 0x88A0, symSize: 0x10 }
- { offsetInCU: 0x5C18, offset: 0x3775E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtFTW', symObjAddr: 0x3A20, symBinAddr: 0x88B0, symSize: 0x10 }
- { offsetInCU: 0x5C34, offset: 0x3777A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itFTW', symObjAddr: 0x3A30, symBinAddr: 0x88C0, symSize: 0x10 }
- { offsetInCU: 0x5C50, offset: 0x37796, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11isMoveValid7onBoard7fromRow13andFromColumn02toM00n2ToP0SbAA0K0V_S4itFTW', symObjAddr: 0x3A40, symBinAddr: 0x88D0, symSize: 0x10 }
- { offsetInCU: 0x5C6C, offset: 0x377B2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11isMoveValid7onBoard04withH0SbAA0K0V_AA0H0VtFTW', symObjAddr: 0x3A50, symBinAddr: 0x88E0, symSize: 0x10 }
- { offsetInCU: 0x5C88, offset: 0x377CE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10isGameOver9withBoard16andLastRowPlayed0lM12ColumnPlayerSb_AA6ResultOtAA0K0V_S2itFTW', symObjAddr: 0x3A60, symBinAddr: 0x88F0, symSize: 0x10 }
- { offsetInCU: 0x5CA4, offset: 0x377EA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10playedMove_15onStartingBoard012andResultingK0yAA0H0V_AA0K0VALtKFTW', symObjAddr: 0x3A70, symBinAddr: 0x8900, symSize: 0x10 }
- { offsetInCU: 0x5CD9, offset: 0x3781F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0x3A80, symBinAddr: 0x8910, symSize: 0x10 }
- { offsetInCU: 0x5D1E, offset: 0x37864, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0x3A90, symBinAddr: 0x8920, symSize: 0x10 }
- { offsetInCU: 0x5D51, offset: 0x37897, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10checkBoardyyAA0H0VKFZTf4nd_n', symObjAddr: 0x5C40, symBinAddr: 0xAAD0, symSize: 0x2E0 }
- { offsetInCU: 0x60E8, offset: 0x37C2E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV20initPlacesByCellType33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardVFZTf4nd_n', symObjAddr: 0x5F20, symBinAddr: 0xADB0, symSize: 0x3D0 }
- { offsetInCU: 0x65E9, offset: 0x3812F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV23checkCellsByTypeIterate33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x62F0, symBinAddr: 0xB180, symSize: 0x150 }
- { offsetInCU: 0x6791, offset: 0x382D7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV18checkPiecesIterate33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x6440, symBinAddr: 0xB2D0, symSize: 0x150 }
- { offsetInCU: 0x6859, offset: 0x3839F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15checkWaterCells33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x6590, symBinAddr: 0xB420, symSize: 0xB0 }
- { offsetInCU: 0x695B, offset: 0x384A1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV6pieces33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x340, symBinAddr: 0x51D0, symSize: 0x20 }
- { offsetInCU: 0x6975, offset: 0x384BB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x360, symBinAddr: 0x51F0, symSize: 0x30 }
- { offsetInCU: 0x69AB, offset: 0x384F1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15iteratingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x420, symBinAddr: 0x52B0, symSize: 0x30 }
- { offsetInCU: 0x69C5, offset: 0x3850B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12endingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x4E0, symBinAddr: 0x5370, symSize: 0x20 }
- { offsetInCU: 0x69DF, offset: 0x38525, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16placesByCellType_WZ', symObjAddr: 0x500, symBinAddr: 0x5390, symSize: 0x20 }
- { offsetInCU: 0x6F06, offset: 0x38A4C, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8setValue_6forKeyyq_n_xtF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x3AA0, symBinAddr: 0x8930, symSize: 0xB0 }
- { offsetInCU: 0x6F7B, offset: 0x38AC1, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x3B50, symBinAddr: 0x89E0, symSize: 0x60 }
- { offsetInCU: 0x6FA8, offset: 0x38AEE, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x3BB0, symBinAddr: 0x8A40, symSize: 0x30 }
- { offsetInCU: 0x6FEB, offset: 0x38B31, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x3BE0, symBinAddr: 0x8A70, symSize: 0x50 }
- { offsetInCU: 0x7063, offset: 0x38BA9, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x3C30, symBinAddr: 0x8AC0, symSize: 0xD0 }
- { offsetInCU: 0x719B, offset: 0x38CE1, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x3D00, symBinAddr: 0x8B90, symSize: 0x30 }
- { offsetInCU: 0x71BE, offset: 0x38D04, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5.resume.0', symObjAddr: 0x3D30, symBinAddr: 0x8BC0, symSize: 0x20 }
- { offsetInCU: 0x71F9, offset: 0x38D3F, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV12mutatingFind_8isUniques10_HashTableV6BucketV6bucket_Sb5foundtx_SbtF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x3D50, symBinAddr: 0x8BE0, symSize: 0xB0 }
- { offsetInCU: 0x7261, offset: 0x38DA7, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV12mutatingFind_8isUniques10_HashTableV6BucketV6bucket_Sb5foundtx_SbtF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x3E00, symBinAddr: 0x8C90, symSize: 0xC0 }
- { offsetInCU: 0x72B7, offset: 0x38DFD, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF14DouShouQiModel5BoardV_TB5', symObjAddr: 0x3EC0, symBinAddr: 0x8D50, symSize: 0x80 }
- { offsetInCU: 0x7324, offset: 0x38E6A, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x3FA0, symBinAddr: 0x8E30, symSize: 0x1E0 }
- { offsetInCU: 0x7447, offset: 0x38F8D, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x4180, symBinAddr: 0x9010, symSize: 0x50 }
- { offsetInCU: 0x7518, offset: 0x3905E, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF14DouShouQiModel5BoardV_TB5', symObjAddr: 0x41D0, symBinAddr: 0x9060, symSize: 0x210 }
- { offsetInCU: 0x76D8, offset: 0x3921E, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x4470, symBinAddr: 0x9300, symSize: 0x200 }
- { offsetInCU: 0x7751, offset: 0x39297, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF14DouShouQiModel5BoardV_SiTg5', symObjAddr: 0x4670, symBinAddr: 0x9500, symSize: 0x210 }
- { offsetInCU: 0x77EB, offset: 0x39331, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x4880, symBinAddr: 0x9710, symSize: 0x380 }
- { offsetInCU: 0x7988, offset: 0x394CE, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF14DouShouQiModel5BoardV_SiTg5', symObjAddr: 0x4C00, symBinAddr: 0x9A90, symSize: 0x330 }
- { offsetInCU: 0x7AAF, offset: 0x395F5, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x4F30, symBinAddr: 0x9DC0, symSize: 0x140 }
- { offsetInCU: 0x7CC8, offset: 0x3980E, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x5070, symBinAddr: 0x9F00, symSize: 0x160 }
- { offsetInCU: 0x7EF4, offset: 0x39A3A, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x51D0, symBinAddr: 0xA060, symSize: 0x1C0 }
- { offsetInCU: 0x7F58, offset: 0x39A9E, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x5390, symBinAddr: 0xA220, symSize: 0x2F0 }
- { offsetInCU: 0x8173, offset: 0x39CB9, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x5680, symBinAddr: 0xA510, symSize: 0x350 }
- { offsetInCU: 0x83B8, offset: 0x39EFE, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x59D0, symBinAddr: 0xA860, symSize: 0x20 }
- { offsetInCU: 0x83D0, offset: 0x39F16, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x59F0, symBinAddr: 0xA880, symSize: 0x20 }
- { offsetInCU: 0x842A, offset: 0x39F70, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x5A10, symBinAddr: 0xA8A0, symSize: 0x120 }
- { offsetInCU: 0x8582, offset: 0x3A0C8, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x5B30, symBinAddr: 0xA9C0, symSize: 0x110 }
- { offsetInCU: 0x87DD, offset: 0x3A323, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOACs0F0AAWl', symObjAddr: 0x6830, symBinAddr: 0xB6C0, symSize: 0x30 }
- { offsetInCU: 0x87F1, offset: 0x3A337, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOACs0G0AAWl', symObjAddr: 0x6860, symBinAddr: 0xB6F0, symSize: 0x30 }
- { offsetInCU: 0x8805, offset: 0x3A34B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwCP', symObjAddr: 0x6890, symBinAddr: 0xB720, symSize: 0x30 }
- { offsetInCU: 0x8819, offset: 0x3A35F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwxx', symObjAddr: 0x68C0, symBinAddr: 0xB750, symSize: 0x20 }
- { offsetInCU: 0x882D, offset: 0x3A373, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwcp', symObjAddr: 0x68E0, symBinAddr: 0xB770, symSize: 0x30 }
- { offsetInCU: 0x8841, offset: 0x3A387, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwca', symObjAddr: 0x6910, symBinAddr: 0xB7A0, symSize: 0x50 }
- { offsetInCU: 0x8855, offset: 0x3A39B, size: 0x8, addend: 0x0, symName: ___swift_memcpy16_8, symObjAddr: 0x6960, symBinAddr: 0xB7F0, symSize: 0x10 }
- { offsetInCU: 0x8869, offset: 0x3A3AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwta', symObjAddr: 0x6970, symBinAddr: 0xB800, symSize: 0x30 }
- { offsetInCU: 0x887D, offset: 0x3A3C3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwet', symObjAddr: 0x69A0, symBinAddr: 0xB830, symSize: 0x40 }
- { offsetInCU: 0x8891, offset: 0x3A3D7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwst', symObjAddr: 0x69E0, symBinAddr: 0xB870, symSize: 0x40 }
- { offsetInCU: 0x88A5, offset: 0x3A3EB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVMa', symObjAddr: 0x6A20, symBinAddr: 0xB8B0, symSize: 0x10 }
- { offsetInCU: 0x88B9, offset: 0x3A3FF, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledName, symObjAddr: 0x6A30, symBinAddr: 0xB8C0, symSize: 0x40 }
- { offsetInCU: 0x897D, offset: 0x3A4C3, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy14DouShouQiModel4MoveVG_s15EmptyCollectionVyANGTg5Tf4nndn_n', symObjAddr: 0x6B70, symBinAddr: 0xBA00, symSize: 0x150 }
- { offsetInCU: 0x8A4E, offset: 0x3A594, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lF14DouShouQiModel4MoveV_s15EmptyCollectionVyAHGTg5Tf4ndn_n', symObjAddr: 0x6CC0, symBinAddr: 0xBB50, symSize: 0xA0 }
- { offsetInCU: 0x8C5D, offset: 0x3A7A3, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x520, symBinAddr: 0x53B0, symSize: 0x40 }
- { offsetInCU: 0x8C79, offset: 0x3A7BF, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x560, symBinAddr: 0x53F0, symSize: 0x20 }
- { offsetInCU: 0x8D23, offset: 0x3A869, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x580, symBinAddr: 0x5410, symSize: 0xD0 }
- { offsetInCU: 0x9295, offset: 0x3ADDB, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5Tf4gd_n', symObjAddr: 0x6640, symBinAddr: 0xB4D0, symSize: 0x100 }
- { offsetInCU: 0x93C6, offset: 0x3AF0C, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel5BoardV_SiTg5Tf4gd_n', symObjAddr: 0x6740, symBinAddr: 0xB5D0, symSize: 0xF0 }
- { offsetInCU: 0x9513, offset: 0x3B059, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel5OwnerO_AC6PlayerCTg5Tf4gd_n', symObjAddr: 0x6A70, symBinAddr: 0xB900, symSize: 0x100 }
- { offsetInCU: 0x27, offset: 0x3B392, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV6ofType7ownedBy9withPieceAcA0eG0O_AA5OwnerOAA0K0VSgtcfC', symObjAddr: 0x0, symBinAddr: 0xBFF0, symSize: 0x20 }
- { offsetInCU: 0x4B, offset: 0x3B3B6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV6ofType7ownedBy9withPieceAcA0eG0O_AA5OwnerOAA0K0VSgtcfC', symObjAddr: 0x0, symBinAddr: 0xBFF0, symSize: 0x20 }
- { offsetInCU: 0x9A, offset: 0x3B405, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV11descriptionSSvg', symObjAddr: 0x20, symBinAddr: 0xC010, symSize: 0x100 }
- { offsetInCU: 0x1DF, offset: 0x3B54A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV8cellTypeAA0eG0Ovg', symObjAddr: 0x120, symBinAddr: 0xC110, symSize: 0x10 }
- { offsetInCU: 0x1FD, offset: 0x3B568, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV12initialOwnerAA0G0Ovg', symObjAddr: 0x130, symBinAddr: 0xC120, symSize: 0x10 }
- { offsetInCU: 0x21B, offset: 0x3B586, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvg', symObjAddr: 0x140, symBinAddr: 0xC130, symSize: 0x10 }
- { offsetInCU: 0x239, offset: 0x3B5A4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvs', symObjAddr: 0x150, symBinAddr: 0xC140, symSize: 0x10 }
- { offsetInCU: 0x277, offset: 0x3B5E2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvM', symObjAddr: 0x160, symBinAddr: 0xC150, symSize: 0x20 }
- { offsetInCU: 0x2A5, offset: 0x3B610, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvM.resume.0', symObjAddr: 0x180, symBinAddr: 0xC170, symSize: 0x10 }
- { offsetInCU: 0x2D0, offset: 0x3B63B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV2eeoiySbAC_ACtFZ', symObjAddr: 0x190, symBinAddr: 0xC180, symSize: 0x10 }
- { offsetInCU: 0x2E4, offset: 0x3B64F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x1A0, symBinAddr: 0xC190, symSize: 0x10 }
- { offsetInCU: 0x30F, offset: 0x3B67A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1B0, symBinAddr: 0xC1A0, symSize: 0x10 }
- { offsetInCU: 0x340, offset: 0x3B6AB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x1C0, symBinAddr: 0xC1B0, symSize: 0x60 }
- { offsetInCU: 0x3B4, offset: 0x3B71F, size: 0x8, addend: 0x0, symName: ___swift_memcpy4_1, symObjAddr: 0x220, symBinAddr: 0xC210, symSize: 0x10 }
- { offsetInCU: 0x3C8, offset: 0x3B733, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVwet', symObjAddr: 0x240, symBinAddr: 0xC220, symSize: 0x40 }
- { offsetInCU: 0x3DC, offset: 0x3B747, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVwst', symObjAddr: 0x280, symBinAddr: 0xC260, symSize: 0x40 }
- { offsetInCU: 0x3F0, offset: 0x3B75B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVMa', symObjAddr: 0x2C0, symBinAddr: 0xC2A0, symSize: 0xA }
- { offsetInCU: 0x2B, offset: 0x3B866, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0xC2B0, symSize: 0x170 }
- { offsetInCU: 0x4F, offset: 0x3B88A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGridSaySayAA4CellVGGvpZ', symObjAddr: 0xBDD0, symBinAddr: 0x1DB50, symSize: 0x0 }
- { offsetInCU: 0x195, offset: 0x3B9D0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0xC2B0, symSize: 0x170 }
- { offsetInCU: 0x575, offset: 0x3BDB0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11createBoardAA0I0VyFZ', symObjAddr: 0x170, symBinAddr: 0xC420, symSize: 0x70 }
- { offsetInCU: 0x5B3, offset: 0x3BDEE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10checkBoardyyAA0I0VKFZ', symObjAddr: 0x1E0, symBinAddr: 0xC490, symSize: 0x10 }
- { offsetInCU: 0x5CE, offset: 0x3BE09, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVACycfC', symObjAddr: 0x1F0, symBinAddr: 0xC4A0, symSize: 0x30 }
- { offsetInCU: 0x612, offset: 0x3BE4D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10occurences8historicACSDyAA5BoardVSiG_SayAA4MoveVGtcfC', symObjAddr: 0x220, symBinAddr: 0xC4D0, symSize: 0x50 }
- { offsetInCU: 0x676, offset: 0x3BEB1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtF', symObjAddr: 0x270, symBinAddr: 0xC520, symSize: 0x1B0 }
- { offsetInCU: 0x9B0, offset: 0x3C1EB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itF', symObjAddr: 0x420, symBinAddr: 0xC6D0, symSize: 0x2A0 }
- { offsetInCU: 0xDB1, offset: 0x3C5EC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11isMoveValid7onBoard7fromRow13andFromColumn02toN00o2ToQ0SbAA0L0V_S4itF', symObjAddr: 0x6C0, symBinAddr: 0xC970, symSize: 0x80 }
- { offsetInCU: 0xEAA, offset: 0x3C6E5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11isMoveValid7onBoard04withI0SbAA0L0V_AA0I0VtF', symObjAddr: 0x740, symBinAddr: 0xC9F0, symSize: 0xF0 }
- { offsetInCU: 0x1085, offset: 0x3C8C0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV13getNextPlayerAA5OwnerOyF', symObjAddr: 0x830, symBinAddr: 0xCAE0, symSize: 0x30 }
- { offsetInCU: 0x116B, offset: 0x3C9A6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10isGameOver9withBoard16andLastRowPlayed0mN12ColumnPlayerSb_AA6ResultOtAA0L0V_S2itF', symObjAddr: 0x860, symBinAddr: 0xCB10, symSize: 0x130 }
- { offsetInCU: 0x12C3, offset: 0x3CAFE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10playedMove_15onStartingBoard012andResultingL0yAA0I0V_AA0L0VAJtKF', symObjAddr: 0x990, symBinAddr: 0xCC40, symSize: 0x240 }
- { offsetInCU: 0x146A, offset: 0x3CCA5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10occurencesSDyAA5BoardVSiGvg', symObjAddr: 0xBD0, symBinAddr: 0xCE80, symSize: 0x10 }
- { offsetInCU: 0x147E, offset: 0x3CCB9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8historicSayAA4MoveVGvg', symObjAddr: 0xBE0, symBinAddr: 0xCE90, symSize: 0x10 }
- { offsetInCU: 0x14B0, offset: 0x3CCEB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11createBoardAA0I0VyFZTW', symObjAddr: 0xBF0, symBinAddr: 0xCEA0, symSize: 0x70 }
- { offsetInCU: 0x14FD, offset: 0x3CD38, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10checkBoardyyAA0I0VKFZTW', symObjAddr: 0xC60, symBinAddr: 0xCF10, symSize: 0x10 }
- { offsetInCU: 0x1535, offset: 0x3CD70, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP13getNextPlayerAA5OwnerOyFTW', symObjAddr: 0xC70, symBinAddr: 0xCF20, symSize: 0x10 }
- { offsetInCU: 0x1551, offset: 0x3CD8C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtFTW', symObjAddr: 0xC80, symBinAddr: 0xCF30, symSize: 0x10 }
- { offsetInCU: 0x156D, offset: 0x3CDA8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itFTW', symObjAddr: 0xC90, symBinAddr: 0xCF40, symSize: 0x10 }
- { offsetInCU: 0x1589, offset: 0x3CDC4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11isMoveValid7onBoard7fromRow13andFromColumn02toN00o2ToQ0SbAA0L0V_S4itFTW', symObjAddr: 0xCA0, symBinAddr: 0xCF50, symSize: 0x10 }
- { offsetInCU: 0x15A5, offset: 0x3CDE0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11isMoveValid7onBoard04withI0SbAA0L0V_AA0I0VtFTW', symObjAddr: 0xCB0, symBinAddr: 0xCF60, symSize: 0x10 }
- { offsetInCU: 0x15C1, offset: 0x3CDFC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10isGameOver9withBoard16andLastRowPlayed0mN12ColumnPlayerSb_AA6ResultOtAA0L0V_S2itFTW', symObjAddr: 0xCC0, symBinAddr: 0xCF70, symSize: 0x10 }
- { offsetInCU: 0x15DD, offset: 0x3CE18, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10playedMove_15onStartingBoard012andResultingL0yAA0I0V_AA0L0VALtKFTW', symObjAddr: 0xCD0, symBinAddr: 0xCF80, symSize: 0x10 }
- { offsetInCU: 0x1611, offset: 0x3CE4C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0xCE0, symBinAddr: 0xCF90, symSize: 0x10 }
- { offsetInCU: 0x1654, offset: 0x3CE8F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0xCF0, symBinAddr: 0xCFA0, symSize: 0x10 }
- { offsetInCU: 0x1686, offset: 0x3CEC1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV16checkCellsByType33_2B29F97F1EE5509065CD9853A78D42F5LLyyAA5BoardVKFZTf4nd_n', symObjAddr: 0xD00, symBinAddr: 0xCFB0, symSize: 0x130 }
- { offsetInCU: 0x18E4, offset: 0x3D11F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11checkPieces33_2B29F97F1EE5509065CD9853A78D42F5LLyyAA5BoardVKFZTf4nd_n', symObjAddr: 0xE30, symBinAddr: 0xD0E0, symSize: 0x230 }
- { offsetInCU: 0x1CEA, offset: 0x3D525, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10checkBoardyyAA0I0VKFZTf4nd_n', symObjAddr: 0x1060, symBinAddr: 0xD310, symSize: 0xC0 }
- { offsetInCU: 0x1F87, offset: 0x3D7C2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwCP', symObjAddr: 0x11C0, symBinAddr: 0xD3D0, symSize: 0x30 }
- { offsetInCU: 0x1F9B, offset: 0x3D7D6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwxx', symObjAddr: 0x11F0, symBinAddr: 0xD400, symSize: 0x20 }
- { offsetInCU: 0x1FAF, offset: 0x3D7EA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwcp', symObjAddr: 0x1210, symBinAddr: 0xD420, symSize: 0x30 }
- { offsetInCU: 0x1FC3, offset: 0x3D7FE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwca', symObjAddr: 0x1240, symBinAddr: 0xD450, symSize: 0x50 }
- { offsetInCU: 0x1FD7, offset: 0x3D812, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwta', symObjAddr: 0x12A0, symBinAddr: 0xD4A0, symSize: 0x30 }
- { offsetInCU: 0x1FEB, offset: 0x3D826, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwet', symObjAddr: 0x12D0, symBinAddr: 0xD4D0, symSize: 0x40 }
- { offsetInCU: 0x1FFF, offset: 0x3D83A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwst', symObjAddr: 0x1310, symBinAddr: 0xD510, symSize: 0x40 }
- { offsetInCU: 0x2013, offset: 0x3D84E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVMa', symObjAddr: 0x1350, symBinAddr: 0xD550, symSize: 0xA }
- { offsetInCU: 0x72, offset: 0x3DC02, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0xD610, symSize: 0x60 }
- { offsetInCU: 0xC3, offset: 0x3DC53, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCfd', symObjAddr: 0x80, symBinAddr: 0xD690, symSize: 0x20 }
- { offsetInCU: 0xE0, offset: 0x3DC70, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC26addPlayedCallbacksListeneryyyAA4MoveVSg_ACtYaKcF', symObjAddr: 0xA0, symBinAddr: 0xD6B0, symSize: 0xE0 }
- { offsetInCU: 0x1F4, offset: 0x3DD84, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKF', symObjAddr: 0x180, symBinAddr: 0xD790, symSize: 0x50 }
- { offsetInCU: 0x27B, offset: 0x3DE0B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY0_', symObjAddr: 0x1D0, symBinAddr: 0xD7E0, symSize: 0x110 }
- { offsetInCU: 0x3D9, offset: 0x3DF69, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTQ1_', symObjAddr: 0x2E0, symBinAddr: 0xD8F0, symSize: 0x80 }
- { offsetInCU: 0x490, offset: 0x3E020, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY2_', symObjAddr: 0x360, symBinAddr: 0xD970, symSize: 0x120 }
- { offsetInCU: 0x571, offset: 0x3E101, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY3_', symObjAddr: 0x480, symBinAddr: 0xDA90, symSize: 0x50 }
- { offsetInCU: 0x5E3, offset: 0x3E173, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC4nameSSvg', symObjAddr: 0x4D0, symBinAddr: 0xDAE0, symSize: 0x30 }
- { offsetInCU: 0x610, offset: 0x3E1A0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC2idAA5OwnerOvg', symObjAddr: 0x500, symBinAddr: 0xDB10, symSize: 0x10 }
- { offsetInCU: 0x673, offset: 0x3E203, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x510, symBinAddr: 0xDB20, symSize: 0x90 }
- { offsetInCU: 0x6D0, offset: 0x3E260, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x5A0, symBinAddr: 0xDBB0, symSize: 0x30 }
- { offsetInCU: 0x740, offset: 0x3E2D0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCfD', symObjAddr: 0x790, symBinAddr: 0xDDA0, symSize: 0x30 }
- { offsetInCU: 0x784, offset: 0x3E314, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCMa', symObjAddr: 0x60, symBinAddr: 0xD670, symSize: 0x20 }
- { offsetInCU: 0x88B, offset: 0x3E41B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TR', symObjAddr: 0x5D0, symBinAddr: 0xDBE0, symSize: 0x70 }
- { offsetInCU: 0x8C5, offset: 0x3E455, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTQ0_', symObjAddr: 0x640, symBinAddr: 0xDC50, symSize: 0x50 }
- { offsetInCU: 0x91F, offset: 0x3E4AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA', symObjAddr: 0x6B0, symBinAddr: 0xDCC0, symSize: 0x90 }
- { offsetInCU: 0x94F, offset: 0x3E4DF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTATQ0_', symObjAddr: 0x740, symBinAddr: 0xDD50, symSize: 0x50 }
- { offsetInCU: 0xA11, offset: 0x3E5A1, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSi3row_Si3colt_Tg5', symObjAddr: 0x910, symBinAddr: 0xDF20, symSize: 0x110 }
- { offsetInCU: 0xB9C, offset: 0x3E72C, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0xA60, symBinAddr: 0xE030, symSize: 0x120 }
- { offsetInCU: 0xD3F, offset: 0x3E8CF, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0xB80, symBinAddr: 0xE150, symSize: 0x110 }
- { offsetInCU: 0xEED, offset: 0x3EA7D, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSay14DouShouQiModel4CellVG_Tg5', symObjAddr: 0xC90, symBinAddr: 0xE260, symSize: 0x130 }
- { offsetInCU: 0x27, offset: 0x3EDA2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP7_domainSSvgTW', symObjAddr: 0x0, symBinAddr: 0xE5E0, symSize: 0x10 }
- { offsetInCU: 0x3F, offset: 0x3EDBA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwCP', symObjAddr: 0x40, symBinAddr: 0xE620, symSize: 0x40 }
- { offsetInCU: 0x53, offset: 0x3EDCE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwxx', symObjAddr: 0x80, symBinAddr: 0xE660, symSize: 0x20 }
- { offsetInCU: 0x67, offset: 0x3EDE2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwcp', symObjAddr: 0xA0, symBinAddr: 0xE680, symSize: 0x40 }
- { offsetInCU: 0x7B, offset: 0x3EDF6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwca', symObjAddr: 0xE0, symBinAddr: 0xE6C0, symSize: 0x80 }
- { offsetInCU: 0x8F, offset: 0x3EE0A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwta', symObjAddr: 0x170, symBinAddr: 0xE740, symSize: 0x50 }
- { offsetInCU: 0xA3, offset: 0x3EE1E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwet', symObjAddr: 0x1C0, symBinAddr: 0xE790, symSize: 0x50 }
- { offsetInCU: 0xB7, offset: 0x3EE32, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwst', symObjAddr: 0x210, symBinAddr: 0xE7E0, symSize: 0x50 }
- { offsetInCU: 0xCB, offset: 0x3EE46, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwug', symObjAddr: 0x260, symBinAddr: 0xE830, symSize: 0x20 }
- { offsetInCU: 0xDF, offset: 0x3EE5A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwup', symObjAddr: 0x280, symBinAddr: 0xE850, symSize: 0x10 }
- { offsetInCU: 0xF3, offset: 0x3EE6E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwui', symObjAddr: 0x290, symBinAddr: 0xE860, symSize: 0x30 }
- { offsetInCU: 0x107, offset: 0x3EE82, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOMa', symObjAddr: 0x2C0, symBinAddr: 0xE890, symSize: 0xA }
- { offsetInCU: 0x12C, offset: 0x3EEA7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP7_domainSSvgTW', symObjAddr: 0x0, symBinAddr: 0xE5E0, symSize: 0x10 }
- { offsetInCU: 0x148, offset: 0x3EEC3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP5_codeSivgTW', symObjAddr: 0x10, symBinAddr: 0xE5F0, symSize: 0x10 }
- { offsetInCU: 0x164, offset: 0x3EEDF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP9_userInfoyXlSgvgTW', symObjAddr: 0x20, symBinAddr: 0xE600, symSize: 0x10 }
- { offsetInCU: 0x180, offset: 0x3EEFB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0x30, symBinAddr: 0xE610, symSize: 0x10 }
- { offsetInCU: 0x27, offset: 0x3EF8F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x0, symBinAddr: 0xE8A0, symSize: 0x40 }
- { offsetInCU: 0x52, offset: 0x3EFBA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x0, symBinAddr: 0xE8A0, symSize: 0x40 }
- { offsetInCU: 0xBB, offset: 0x3F023, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY0_', symObjAddr: 0x40, symBinAddr: 0xE8E0, symSize: 0x200 }
- { offsetInCU: 0x394, offset: 0x3F2FC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTQ1_', symObjAddr: 0x240, symBinAddr: 0xEAE0, symSize: 0x80 }
- { offsetInCU: 0x48D, offset: 0x3F3F5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY2_', symObjAddr: 0x2C0, symBinAddr: 0xEB60, symSize: 0x140 }
- { offsetInCU: 0x5AF, offset: 0x3F517, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY3_', symObjAddr: 0x400, symBinAddr: 0xECA0, symSize: 0x60 }
- { offsetInCU: 0x696, offset: 0x3F5FE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x490, symBinAddr: 0xED30, symSize: 0x90 }
- { offsetInCU: 0x72D, offset: 0x3F695, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x520, symBinAddr: 0xEDC0, symSize: 0x70 }
- { offsetInCU: 0x7B6, offset: 0x3F71E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCfd', symObjAddr: 0x590, symBinAddr: 0xEE30, symSize: 0x20 }
- { offsetInCU: 0x815, offset: 0x3F77D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCfD', symObjAddr: 0x5B0, symBinAddr: 0xEE50, symSize: 0x30 }
- { offsetInCU: 0xA42, offset: 0x3F9AA, size: 0x8, addend: 0x0, symName: ___swift_project_boxed_opaque_existential_1, symObjAddr: 0x460, symBinAddr: 0xED00, symSize: 0x30 }
- { offsetInCU: 0xB2A, offset: 0x3FA92, size: 0x8, addend: 0x0, symName: '_$sSGsE4next10upperBoundqd__qd___ts17FixedWidthIntegerRd__SURd__lFs27SystemRandomNumberGeneratorV_SuTg5', symObjAddr: 0x5E0, symBinAddr: 0xEE80, symSize: 0xB0 }
- { offsetInCU: 0xBF7, offset: 0x3FB5F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCMa', symObjAddr: 0x690, symBinAddr: 0xEF30, symSize: 0x14 }
- { offsetInCU: 0x27, offset: 0x3FD0B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO8allCasesSayACGvgZ', symObjAddr: 0x0, symBinAddr: 0xEF50, symSize: 0x40 }
- { offsetInCU: 0x6C, offset: 0x3FD50, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO8allCasesSayACGvgZ', symObjAddr: 0x0, symBinAddr: 0xEF50, symSize: 0x40 }
- { offsetInCU: 0xDB, offset: 0x3FDBF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO2eeoiySbAC_ACtFZ', symObjAddr: 0x80, symBinAddr: 0xEF90, symSize: 0x10 }
- { offsetInCU: 0x10A, offset: 0x3FDEE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO4hash4intoys6HasherVz_tF', symObjAddr: 0x90, symBinAddr: 0xEFA0, symSize: 0x20 }
- { offsetInCU: 0x1A0, offset: 0x3FE84, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO9hashValueSivg', symObjAddr: 0xB0, symBinAddr: 0xEFC0, symSize: 0x40 }
- { offsetInCU: 0x29B, offset: 0x3FF7F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xF0, symBinAddr: 0xF000, symSize: 0x10 }
- { offsetInCU: 0x2F1, offset: 0x3FFD5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x100, symBinAddr: 0xF010, symSize: 0x40 }
- { offsetInCU: 0x3D5, offset: 0x400B9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x140, symBinAddr: 0xF050, symSize: 0x20 }
- { offsetInCU: 0x461, offset: 0x40145, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOs12CaseIterableAAsADP8allCases03AllJ0QzvgZTW', symObjAddr: 0x270, symBinAddr: 0xF180, symSize: 0x50 }
- { offsetInCU: 0x4FD, offset: 0x401E1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASQWb', symObjAddr: 0x1A0, symBinAddr: 0xF0B0, symSize: 0x10 }
- { offsetInCU: 0x511, offset: 0x401F5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOACSQAAWl', symObjAddr: 0x1B0, symBinAddr: 0xF0C0, symSize: 0x30 }
- { offsetInCU: 0x525, offset: 0x40209, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOs12CaseIterableAA8AllCasessADP_SlWT', symObjAddr: 0x1E0, symBinAddr: 0xF0F0, symSize: 0x10 }
- { offsetInCU: 0x539, offset: 0x4021D, size: 0x8, addend: 0x0, symName: '_$sSay14DouShouQiModel8CellTypeOGSayxGSlsWl', symObjAddr: 0x1F0, symBinAddr: 0xF100, symSize: 0x40 }
- { offsetInCU: 0x54D, offset: 0x40231, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledNameAbstract, symObjAddr: 0x230, symBinAddr: 0xF140, symSize: 0x40 }
- { offsetInCU: 0x561, offset: 0x40245, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwet', symObjAddr: 0x2E0, symBinAddr: 0xF1D0, symSize: 0x80 }
- { offsetInCU: 0x575, offset: 0x40259, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwst', symObjAddr: 0x360, symBinAddr: 0xF250, symSize: 0xD0 }
- { offsetInCU: 0x589, offset: 0x4026D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwug', symObjAddr: 0x430, symBinAddr: 0xF320, symSize: 0x10 }
- { offsetInCU: 0x59D, offset: 0x40281, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwup', symObjAddr: 0x440, symBinAddr: 0xF330, symSize: 0x10 }
- { offsetInCU: 0x5B1, offset: 0x40295, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwui', symObjAddr: 0x450, symBinAddr: 0xF340, symSize: 0x10 }
- { offsetInCU: 0x5C5, offset: 0x402A9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOMa', symObjAddr: 0x460, symBinAddr: 0xF350, symSize: 0xA }
- { offsetInCU: 0x632, offset: 0x40316, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x160, symBinAddr: 0xF070, symSize: 0x40 }
- { offsetInCU: 0x2B, offset: 0x40457, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV8withGridACSgSaySayAA4CellVGG_tcfC', symObjAddr: 0x0, symBinAddr: 0xF360, symSize: 0x60 }
- { offsetInCU: 0xA6, offset: 0x404D2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV8withGridACSgSaySayAA4CellVGG_tcfC', symObjAddr: 0x0, symBinAddr: 0xF360, symSize: 0x60 }
- { offsetInCU: 0x285, offset: 0x406B1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11countPieces2ofSiAA5OwnerO_tF', symObjAddr: 0x60, symBinAddr: 0xF3C0, symSize: 0x1B0 }
- { offsetInCU: 0x529, offset: 0x40955, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV4hash4intoys6HasherVz_tF', symObjAddr: 0x210, symBinAddr: 0xF570, symSize: 0xB0 }
- { offsetInCU: 0x764, offset: 0x40B90, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV6nbRowsSivg', symObjAddr: 0x2C0, symBinAddr: 0xF620, symSize: 0x10 }
- { offsetInCU: 0x782, offset: 0x40BAE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV9nbColumnsSivg', symObjAddr: 0x2D0, symBinAddr: 0xF630, symSize: 0x10 }
- { offsetInCU: 0x7A0, offset: 0x40BCC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV4gridSaySayAA4CellVGGvg', symObjAddr: 0x2E0, symBinAddr: 0xF640, symSize: 0x10 }
- { offsetInCU: 0x7BE, offset: 0x40BEA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11countPiecesSi04nbOfgI7Player1_Si0higI7Player2tyF', symObjAddr: 0x2F0, symBinAddr: 0xF650, symSize: 0xA0 }
- { offsetInCU: 0x9F2, offset: 0x40E1E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV6insert5piece5atRow9andColumnAA0E6ResultOAA5PieceV_S2itF', symObjAddr: 0x390, symBinAddr: 0xF6F0, symSize: 0x110 }
- { offsetInCU: 0xBA1, offset: 0x40FCD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11removePiece5atRow9andColumnAA0E6ResultOSi_SitF', symObjAddr: 0x4A0, symBinAddr: 0xF800, symSize: 0xF0 }
- { offsetInCU: 0xD6F, offset: 0x4119B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV2eeoiySbAC_ACtFZ', symObjAddr: 0x590, symBinAddr: 0xF8F0, symSize: 0x30 }
- { offsetInCU: 0xDB1, offset: 0x411DD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV9hashValueSivg', symObjAddr: 0x5C0, symBinAddr: 0xF920, symSize: 0x50 }
- { offsetInCU: 0xE3D, offset: 0x41269, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH9hashValueSivgTW', symObjAddr: 0x610, symBinAddr: 0xF970, symSize: 0x50 }
- { offsetInCU: 0xECC, offset: 0x412F8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x660, symBinAddr: 0xF9C0, symSize: 0x10 }
- { offsetInCU: 0xEFA, offset: 0x41326, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x6C0, symBinAddr: 0xFA20, symSize: 0x30 }
- { offsetInCU: 0x1189, offset: 0x415B5, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x6F0, symBinAddr: 0xFA50, symSize: 0x20 }
- { offsetInCU: 0x11C1, offset: 0x415ED, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x710, symBinAddr: 0xFA70, symSize: 0x20 }
- { offsetInCU: 0x11F9, offset: 0x41625, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSay14DouShouQiModel4CellVG_Tg5', symObjAddr: 0x730, symBinAddr: 0xFA90, symSize: 0x20 }
- { offsetInCU: 0x1231, offset: 0x4165D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASQWb', symObjAddr: 0x920, symBinAddr: 0xFC80, symSize: 0x10 }
- { offsetInCU: 0x1245, offset: 0x41671, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVACSQAAWl', symObjAddr: 0x930, symBinAddr: 0xFC90, symSize: 0x30 }
- { offsetInCU: 0x1259, offset: 0x41685, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwCP', symObjAddr: 0x960, symBinAddr: 0xFCC0, symSize: 0x30 }
- { offsetInCU: 0x126D, offset: 0x41699, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwxx', symObjAddr: 0x990, symBinAddr: 0xFCF0, symSize: 0x10 }
- { offsetInCU: 0x1281, offset: 0x416AD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwcp', symObjAddr: 0x9A0, symBinAddr: 0xFD00, symSize: 0x30 }
- { offsetInCU: 0x1295, offset: 0x416C1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwca', symObjAddr: 0x9D0, symBinAddr: 0xFD30, symSize: 0x40 }
- { offsetInCU: 0x12A9, offset: 0x416D5, size: 0x8, addend: 0x0, symName: ___swift_memcpy24_8, symObjAddr: 0xA10, symBinAddr: 0xFD70, symSize: 0x20 }
- { offsetInCU: 0x12BD, offset: 0x416E9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwta', symObjAddr: 0xA30, symBinAddr: 0xFD90, symSize: 0x30 }
- { offsetInCU: 0x12D1, offset: 0x416FD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwet', symObjAddr: 0xA60, symBinAddr: 0xFDC0, symSize: 0x40 }
- { offsetInCU: 0x12E5, offset: 0x41711, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwst', symObjAddr: 0xAA0, symBinAddr: 0xFE00, symSize: 0x40 }
- { offsetInCU: 0x12F9, offset: 0x41725, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVMa', symObjAddr: 0xAE0, symBinAddr: 0xFE40, symSize: 0xA }
- { offsetInCU: 0x1452, offset: 0x4187E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x670, symBinAddr: 0xF9D0, symSize: 0x50 }
- { offsetInCU: 0x1490, offset: 0x418BC, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x750, symBinAddr: 0xFAB0, symSize: 0xA0 }
- { offsetInCU: 0x1564, offset: 0x41990, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZSay14DouShouQiModel4CellVG_Tg5Tf4nnd_n', symObjAddr: 0x7F0, symBinAddr: 0xFB50, symSize: 0x130 }
- { offsetInCU: 0x27, offset: 0x41BD9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9withOwner9andAnimalAcA0G0O_AA0I0OtcfC', symObjAddr: 0x0, symBinAddr: 0xFE50, symSize: 0x20 }
- { offsetInCU: 0x46, offset: 0x41BF8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9withOwner9andAnimalAcA0G0O_AA0I0OtcfC', symObjAddr: 0x0, symBinAddr: 0xFE50, symSize: 0x20 }
- { offsetInCU: 0x85, offset: 0x41C37, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV11descriptionSSvg', symObjAddr: 0x20, symBinAddr: 0xFE70, symSize: 0xC0 }
- { offsetInCU: 0x176, offset: 0x41D28, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV5ownerAA5OwnerOvg', symObjAddr: 0xE0, symBinAddr: 0xFF30, symSize: 0x10 }
- { offsetInCU: 0x194, offset: 0x41D46, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV6animalAA6AnimalOvg', symObjAddr: 0xF0, symBinAddr: 0xFF40, symSize: 0x10 }
- { offsetInCU: 0x1B2, offset: 0x41D64, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV4hash4intoys6HasherVz_tF', symObjAddr: 0x100, symBinAddr: 0xFF50, symSize: 0x40 }
- { offsetInCU: 0x2E8, offset: 0x41E9A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV2eeoiySbAC_ACtFZ', symObjAddr: 0x140, symBinAddr: 0xFF90, symSize: 0x30 }
- { offsetInCU: 0x32D, offset: 0x41EDF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9hashValueSivg', symObjAddr: 0x170, symBinAddr: 0xFFC0, symSize: 0x50 }
- { offsetInCU: 0x4C4, offset: 0x42076, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x1C0, symBinAddr: 0x10010, symSize: 0x10 }
- { offsetInCU: 0x4EF, offset: 0x420A1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH9hashValueSivgTW', symObjAddr: 0x1D0, symBinAddr: 0x10020, symSize: 0x50 }
- { offsetInCU: 0x6A3, offset: 0x42255, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x220, symBinAddr: 0x10070, symSize: 0x40 }
- { offsetInCU: 0x808, offset: 0x423BA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x2B0, symBinAddr: 0x10100, symSize: 0x30 }
- { offsetInCU: 0x8DA, offset: 0x4248C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASQWb', symObjAddr: 0x2E0, symBinAddr: 0x10130, symSize: 0x10 }
- { offsetInCU: 0x8EE, offset: 0x424A0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVACSQAAWl', symObjAddr: 0x2F0, symBinAddr: 0x10140, symSize: 0x30 }
- { offsetInCU: 0x902, offset: 0x424B4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVwet', symObjAddr: 0x340, symBinAddr: 0x10170, symSize: 0x90 }
- { offsetInCU: 0x916, offset: 0x424C8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVwst', symObjAddr: 0x3D0, symBinAddr: 0x10200, symSize: 0xE0 }
- { offsetInCU: 0x92A, offset: 0x424DC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVMa', symObjAddr: 0x4B0, symBinAddr: 0x102E0, symSize: 0xA }
- { offsetInCU: 0x9CF, offset: 0x42581, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x260, symBinAddr: 0x100B0, symSize: 0x50 }
- { offsetInCU: 0x27, offset: 0x42787, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x102F0, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x427AB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x102F0, symSize: 0x10 }
- { offsetInCU: 0x6E, offset: 0x427CE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x50, symBinAddr: 0x10340, symSize: 0x10 }
- { offsetInCU: 0x9F, offset: 0x427FF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x60, symBinAddr: 0x10350, symSize: 0x110 }
- { offsetInCU: 0x15B, offset: 0x428BB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwCP', symObjAddr: 0x170, symBinAddr: 0x10460, symSize: 0x30 }
- { offsetInCU: 0x16F, offset: 0x428CF, size: 0x8, addend: 0x0, symName: ___swift_memcpy25_8, symObjAddr: 0x1B0, symBinAddr: 0x10490, symSize: 0x20 }
- { offsetInCU: 0x183, offset: 0x428E3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwet', symObjAddr: 0x1D0, symBinAddr: 0x104B0, symSize: 0x50 }
- { offsetInCU: 0x197, offset: 0x428F7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwst', symObjAddr: 0x220, symBinAddr: 0x10500, symSize: 0x50 }
- { offsetInCU: 0x1AB, offset: 0x4290B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwug', symObjAddr: 0x270, symBinAddr: 0x10550, symSize: 0x20 }
- { offsetInCU: 0x1BF, offset: 0x4291F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwup', symObjAddr: 0x290, symBinAddr: 0x10570, symSize: 0x10 }
- { offsetInCU: 0x1D3, offset: 0x42933, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwui', symObjAddr: 0x2A0, symBinAddr: 0x10580, symSize: 0x20 }
- { offsetInCU: 0x1E7, offset: 0x42947, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOMa', symObjAddr: 0x2C0, symBinAddr: 0x105A0, symSize: 0xA }
- { offsetInCU: 0x20C, offset: 0x4296C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP7_domainSSvgTW', symObjAddr: 0x10, symBinAddr: 0x10300, symSize: 0x10 }
- { offsetInCU: 0x228, offset: 0x42988, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP5_codeSivgTW', symObjAddr: 0x20, symBinAddr: 0x10310, symSize: 0x10 }
- { offsetInCU: 0x244, offset: 0x429A4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP9_userInfoyXlSgvgTW', symObjAddr: 0x30, symBinAddr: 0x10320, symSize: 0x10 }
- { offsetInCU: 0x260, offset: 0x429C0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0x40, symBinAddr: 0x10330, symSize: 0x10 }
- { offsetInCU: 0x27, offset: 0x42A64, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x105B0, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x42A88, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x105B0, symSize: 0x10 }
- { offsetInCU: 0x7A, offset: 0x42AB7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO17simpleDescriptionSSvg', symObjAddr: 0x10, symBinAddr: 0x105C0, symSize: 0x20 }
- { offsetInCU: 0xA5, offset: 0x42AE2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO4hash4intoys6HasherVz_tF', symObjAddr: 0x30, symBinAddr: 0x105E0, symSize: 0x20 }
- { offsetInCU: 0x13B, offset: 0x42B78, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO9hashValueSivg', symObjAddr: 0x50, symBinAddr: 0x10600, symSize: 0x40 }
- { offsetInCU: 0x236, offset: 0x42C73, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x90, symBinAddr: 0x10640, symSize: 0x10 }
- { offsetInCU: 0x28C, offset: 0x42CC9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH9hashValueSivgTW', symObjAddr: 0xA0, symBinAddr: 0x10650, symSize: 0x40 }
- { offsetInCU: 0x370, offset: 0x42DAD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x10690, symSize: 0x20 }
- { offsetInCU: 0x3F9, offset: 0x42E36, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASQWb', symObjAddr: 0x140, symBinAddr: 0x106F0, symSize: 0x10 }
- { offsetInCU: 0x40D, offset: 0x42E4A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOACSQAAWl', symObjAddr: 0x150, symBinAddr: 0x10700, symSize: 0x30 }
- { offsetInCU: 0x421, offset: 0x42E5E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwet', symObjAddr: 0x1A0, symBinAddr: 0x10730, symSize: 0x80 }
- { offsetInCU: 0x435, offset: 0x42E72, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwst', symObjAddr: 0x220, symBinAddr: 0x107B0, symSize: 0xD0 }
- { offsetInCU: 0x449, offset: 0x42E86, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwug', symObjAddr: 0x2F0, symBinAddr: 0x10880, symSize: 0x10 }
- { offsetInCU: 0x45D, offset: 0x42E9A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwup', symObjAddr: 0x300, symBinAddr: 0x10890, symSize: 0x10 }
- { offsetInCU: 0x471, offset: 0x42EAE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwui', symObjAddr: 0x310, symBinAddr: 0x108A0, symSize: 0x10 }
- { offsetInCU: 0x485, offset: 0x42EC2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOMa', symObjAddr: 0x320, symBinAddr: 0x108B0, symSize: 0xA }
- { offsetInCU: 0x4DD, offset: 0x42F1A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x100, symBinAddr: 0x106B0, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x43045, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0x108C0, symSize: 0x70 }
- { offsetInCU: 0xD3, offset: 0x430F1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0x108C0, symSize: 0x70 }
- { offsetInCU: 0x145, offset: 0x43163, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCfd', symObjAddr: 0x70, symBinAddr: 0x10930, symSize: 0x20 }
- { offsetInCU: 0x1AA, offset: 0x431C8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x90, symBinAddr: 0x10950, symSize: 0x90 }
- { offsetInCU: 0x248, offset: 0x43266, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCfD', symObjAddr: 0x120, symBinAddr: 0x109E0, symSize: 0x30 }
- { offsetInCU: 0x2A2, offset: 0x432C0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCMa', symObjAddr: 0x150, symBinAddr: 0x10A10, symSize: 0x14 }
- { offsetInCU: 0x27, offset: 0x43389, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10A30, symSize: 0x10 }
- { offsetInCU: 0x46, offset: 0x433A8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10A30, symSize: 0x10 }
- { offsetInCU: 0x5A, offset: 0x433BC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2of7fromRow13andFromColumn02toH00i2ToK0AcA5OwnerO_S4itcfC', symObjAddr: 0x10, symBinAddr: 0x10A40, symSize: 0x20 }
- { offsetInCU: 0xC1, offset: 0x43423, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV5ownerAA5OwnerOvg', symObjAddr: 0x30, symBinAddr: 0x10A60, symSize: 0x10 }
- { offsetInCU: 0xDF, offset: 0x43441, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV9rowOriginSivg', symObjAddr: 0x40, symBinAddr: 0x10A70, symSize: 0x10 }
- { offsetInCU: 0xFD, offset: 0x4345F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV12columnOriginSivg', symObjAddr: 0x50, symBinAddr: 0x10A80, symSize: 0x10 }
- { offsetInCU: 0x11B, offset: 0x4347D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV14rowDestinationSivg', symObjAddr: 0x60, symBinAddr: 0x10A90, symSize: 0x10 }
- { offsetInCU: 0x139, offset: 0x4349B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV17columnDestinationSivg', symObjAddr: 0x70, symBinAddr: 0x10AA0, symSize: 0x10 }
- { offsetInCU: 0x157, offset: 0x434B9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV11descriptionSSvg', symObjAddr: 0x80, symBinAddr: 0x10AB0, symSize: 0x1E0 }
- { offsetInCU: 0x287, offset: 0x435E9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x260, symBinAddr: 0x10C90, symSize: 0x10 }
- { offsetInCU: 0x2B2, offset: 0x43614, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x270, symBinAddr: 0x10CA0, symSize: 0x10 }
- { offsetInCU: 0x2E3, offset: 0x43645, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x280, symBinAddr: 0x10CB0, symSize: 0x40 }
- { offsetInCU: 0x365, offset: 0x436C7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwCP', symObjAddr: 0x2C0, symBinAddr: 0x10CF0, symSize: 0x30 }
- { offsetInCU: 0x379, offset: 0x436DB, size: 0x8, addend: 0x0, symName: ___swift_memcpy40_8, symObjAddr: 0x300, symBinAddr: 0x10D20, symSize: 0x20 }
- { offsetInCU: 0x38D, offset: 0x436EF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwet', symObjAddr: 0x320, symBinAddr: 0x10D40, symSize: 0x40 }
- { offsetInCU: 0x3A1, offset: 0x43703, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwst', symObjAddr: 0x360, symBinAddr: 0x10D80, symSize: 0x50 }
- { offsetInCU: 0x3B5, offset: 0x43717, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVMa', symObjAddr: 0x3B0, symBinAddr: 0x10DD0, symSize: 0xA }
- { offsetInCU: 0x27, offset: 0x43808, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueSivg', symObjAddr: 0x0, symBinAddr: 0x10DE0, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x4382C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueSivg', symObjAddr: 0x0, symBinAddr: 0x10DE0, symSize: 0x10 }
- { offsetInCU: 0x66, offset: 0x43847, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueACSgSi_tcfC', symObjAddr: 0x10, symBinAddr: 0x10DF0, symSize: 0x20 }
- { offsetInCU: 0xBA, offset: 0x4389B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x130, symBinAddr: 0x10F10, symSize: 0x10 }
- { offsetInCU: 0xD6, offset: 0x438B7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x140, symBinAddr: 0x10F20, symSize: 0x20 }
- { offsetInCU: 0x10B, offset: 0x438EC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASQWb', symObjAddr: 0x40, symBinAddr: 0x10E20, symSize: 0x10 }
- { offsetInCU: 0x11F, offset: 0x43900, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOACSQAAWl', symObjAddr: 0x50, symBinAddr: 0x10E30, symSize: 0x30 }
- { offsetInCU: 0x149, offset: 0x4392A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwet', symObjAddr: 0x180, symBinAddr: 0x10F40, symSize: 0x80 }
- { offsetInCU: 0x15D, offset: 0x4393E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwst', symObjAddr: 0x200, symBinAddr: 0x10FC0, symSize: 0xD0 }
- { offsetInCU: 0x171, offset: 0x43952, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwug', symObjAddr: 0x2D0, symBinAddr: 0x11090, symSize: 0x10 }
- { offsetInCU: 0x185, offset: 0x43966, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwup', symObjAddr: 0x2E0, symBinAddr: 0x110A0, symSize: 0x10 }
- { offsetInCU: 0x199, offset: 0x4397A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwui', symObjAddr: 0x2F0, symBinAddr: 0x110B0, symSize: 0x10 }
- { offsetInCU: 0x1AD, offset: 0x4398E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOMa', symObjAddr: 0x300, symBinAddr: 0x110C0, symSize: 0xA }
- { offsetInCU: 0x1E7, offset: 0x439C8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x30, symBinAddr: 0x10E10, symSize: 0x10 }
- { offsetInCU: 0x278, offset: 0x43A59, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH9hashValueSivgTW', symObjAddr: 0x80, symBinAddr: 0x10E60, symSize: 0x40 }
- { offsetInCU: 0x350, offset: 0x43B31, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xC0, symBinAddr: 0x10EA0, symSize: 0x30 }
- { offsetInCU: 0x3CC, offset: 0x43BAD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xF0, symBinAddr: 0x10ED0, symSize: 0x40 }
- { offsetInCU: 0x97, offset: 0x43D4B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvg', symObjAddr: 0xA0, symBinAddr: 0x11170, symSize: 0x40 }
- { offsetInCU: 0xDE, offset: 0x43D92, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5rulesAA5Rules_pvg', symObjAddr: 0x140, symBinAddr: 0x11210, symSize: 0x40 }
- { offsetInCU: 0xFB, offset: 0x43DAF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC7playersSDyAA5OwnerOAA6PlayerCGvg', symObjAddr: 0x1B0, symBinAddr: 0x11280, symSize: 0x10 }
- { offsetInCU: 0x128, offset: 0x43DDC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfC', symObjAddr: 0x1C0, symBinAddr: 0x11290, symSize: 0x60 }
- { offsetInCU: 0x14D, offset: 0x43E01, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfc', symObjAddr: 0x220, symBinAddr: 0x112F0, symSize: 0x4F0 }
- { offsetInCU: 0x563, offset: 0x44217, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_', symObjAddr: 0x800, symBinAddr: 0x11830, symSize: 0xB0 }
- { offsetInCU: 0x612, offset: 0x442C6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TQ0_', symObjAddr: 0x8B0, symBinAddr: 0x118E0, symSize: 0x70 }
- { offsetInCU: 0x6A3, offset: 0x44357, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TY2_', symObjAddr: 0x920, symBinAddr: 0x11950, symSize: 0x50 }
- { offsetInCU: 0x6E8, offset: 0x4439C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_', symObjAddr: 0x970, symBinAddr: 0x119A0, symSize: 0xB0 }
- { offsetInCU: 0x797, offset: 0x4444B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TQ0_', symObjAddr: 0xA20, symBinAddr: 0x11A50, symSize: 0x70 }
- { offsetInCU: 0x828, offset: 0x444DC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TY1_', symObjAddr: 0xA90, symBinAddr: 0x11AC0, symSize: 0x30 }
- { offsetInCU: 0x882, offset: 0x44536, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TY2_', symObjAddr: 0xAC0, symBinAddr: 0x11AF0, symSize: 0x50 }
- { offsetInCU: 0x8C7, offset: 0x4457B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withBoard8andRules0H7Player10H7Player2AcA0G0V_AA0I0_pAA6PlayerCALtKcfC', symObjAddr: 0xB10, symBinAddr: 0x11B40, symSize: 0x60 }
- { offsetInCU: 0x8EC, offset: 0x445A0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withBoard8andRules0H7Player10H7Player2AcA0G0V_AA0I0_pAA6PlayerCALtKcfc', symObjAddr: 0xB70, symBinAddr: 0x11BA0, symSize: 0x320 }
- { offsetInCU: 0xA27, offset: 0x446DB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE15StartedListeneryyyAA5BoardVcF', symObjAddr: 0xE90, symBinAddr: 0x11EC0, symSize: 0xD0 }
- { offsetInCU: 0xB3B, offset: 0x447EF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC25addPlayerNotifiedListeneryyyAA5BoardV_AA0G0CtYaKcF', symObjAddr: 0xF60, symBinAddr: 0x11F90, symSize: 0xD0 }
- { offsetInCU: 0xC4F, offset: 0x44903, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE15ChangedListeneryyyACYacF', symObjAddr: 0x10F0, symBinAddr: 0x12120, symSize: 0xD0 }
- { offsetInCU: 0xD63, offset: 0x44A17, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE12OverListeneryyyAA5BoardV_AA6ResultOAA6PlayerCSgtcF', symObjAddr: 0x1220, symBinAddr: 0x12250, symSize: 0xD0 }
- { offsetInCU: 0xE77, offset: 0x44B2B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC30addMoveChosenCallbacksListeneryyyAA5BoardV_AA0G0VAA6PlayerCtcF', symObjAddr: 0x12F0, symBinAddr: 0x12320, symSize: 0xD0 }
- { offsetInCU: 0xF8B, offset: 0x44C3F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC31addInvalidMoveCallbacksListeneryyyAA5BoardV_AA0H0VAA6PlayerCSbtcF', symObjAddr: 0x13C0, symBinAddr: 0x123F0, symSize: 0xE0 }
- { offsetInCU: 0x109F, offset: 0x44D53, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC23addBoardChangedListeneryyyAA0G0VcF', symObjAddr: 0x14A0, symBinAddr: 0x124D0, symSize: 0xE0 }
- { offsetInCU: 0x11B3, offset: 0x44E67, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC23addPieceRemovedListeneryyySi_SiAA0G0VtcF', symObjAddr: 0x1580, symBinAddr: 0x125B0, symSize: 0xE0 }
- { offsetInCU: 0x12E5, offset: 0x44F99, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC18notifyPieceRemoved33_4E9958627B7DCD90B6D32369387417C3LLyySi_SiAA0G0VtF', symObjAddr: 0x1660, symBinAddr: 0x12690, symSize: 0xC0 }
- { offsetInCU: 0x1497, offset: 0x4514B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKF', symObjAddr: 0x1720, symBinAddr: 0x12750, symSize: 0x60 }
- { offsetInCU: 0x1876, offset: 0x4552A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY0_', symObjAddr: 0x1780, symBinAddr: 0x127B0, symSize: 0xD90 }
- { offsetInCU: 0x25A8, offset: 0x4625C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTQ1_', symObjAddr: 0x2510, symBinAddr: 0x13540, symSize: 0x70 }
- { offsetInCU: 0x26D3, offset: 0x46387, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY2_', symObjAddr: 0x2580, symBinAddr: 0x135B0, symSize: 0x280 }
- { offsetInCU: 0x29BD, offset: 0x46671, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTQ3_', symObjAddr: 0x2800, symBinAddr: 0x13830, symSize: 0x80 }
- { offsetInCU: 0x2AAE, offset: 0x46762, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY4_', symObjAddr: 0x2880, symBinAddr: 0x138B0, symSize: 0x150 }
- { offsetInCU: 0x2BE9, offset: 0x4689D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY5_', symObjAddr: 0x29D0, symBinAddr: 0x13A00, symSize: 0x70 }
- { offsetInCU: 0x2C97, offset: 0x4694B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC6isOverSbvg', symObjAddr: 0x2A40, symBinAddr: 0x13A70, symSize: 0x30 }
- { offsetInCU: 0x2CB4, offset: 0x46968, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKF', symObjAddr: 0x2A70, symBinAddr: 0x13AA0, symSize: 0x30 }
- { offsetInCU: 0x2D65, offset: 0x46A19, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY0_', symObjAddr: 0x2AA0, symBinAddr: 0x13AD0, symSize: 0x3D0 }
- { offsetInCU: 0x3221, offset: 0x46ED5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTQ1_', symObjAddr: 0x2E70, symBinAddr: 0x13EA0, symSize: 0x70 }
- { offsetInCU: 0x32B5, offset: 0x46F69, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY2_', symObjAddr: 0x2EE0, symBinAddr: 0x13F10, symSize: 0x270 }
- { offsetInCU: 0x350A, offset: 0x471BE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTQ3_', symObjAddr: 0x3150, symBinAddr: 0x14180, symSize: 0x80 }
- { offsetInCU: 0x35AB, offset: 0x4725F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY4_', symObjAddr: 0x31D0, symBinAddr: 0x14200, symSize: 0x140 }
- { offsetInCU: 0x3697, offset: 0x4734B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY5_', symObjAddr: 0x3310, symBinAddr: 0x14340, symSize: 0x70 }
- { offsetInCU: 0x36E6, offset: 0x4739A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCfd', symObjAddr: 0x3380, symBinAddr: 0x143B0, symSize: 0x80 }
- { offsetInCU: 0x3713, offset: 0x473C7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCfD', symObjAddr: 0x3400, symBinAddr: 0x14430, symSize: 0x20 }
- { offsetInCU: 0x3741, offset: 0x473F5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvpACTK', symObjAddr: 0x0, symBinAddr: 0x110D0, symSize: 0x40 }
- { offsetInCU: 0x3777, offset: 0x4742B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvpACTk', symObjAddr: 0x40, symBinAddr: 0x11110, symSize: 0x60 }
- { offsetInCU: 0x37AF, offset: 0x47463, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5rulesAA5Rules_pvpACTk', symObjAddr: 0xE0, symBinAddr: 0x111B0, symSize: 0x60 }
- { offsetInCU: 0x37F2, offset: 0x474A6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5Rules_pWOc', symObjAddr: 0x180, symBinAddr: 0x11250, symSize: 0x30 }
- { offsetInCU: 0x3929, offset: 0x475DD, size: 0x8, addend: 0x0, symName: ___swift_destroy_boxed_opaque_existential_1, symObjAddr: 0x770, symBinAddr: 0x117E0, symSize: 0x30 }
- { offsetInCU: 0x393D, offset: 0x475F1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCMa', symObjAddr: 0x7A0, symBinAddr: 0x11810, symSize: 0x20 }
- { offsetInCU: 0x3A4F, offset: 0x47703, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TR', symObjAddr: 0x1030, symBinAddr: 0x12060, symSize: 0x70 }
- { offsetInCU: 0x3A89, offset: 0x4773D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TRTQ0_', symObjAddr: 0x10A0, symBinAddr: 0x120D0, symSize: 0x50 }
- { offsetInCU: 0x3B46, offset: 0x477FA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TR', symObjAddr: 0x11C0, symBinAddr: 0x121F0, symSize: 0x60 }
- { offsetInCU: 0x3F7D, offset: 0x47C31, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TA', symObjAddr: 0x3420, symBinAddr: 0x14450, symSize: 0x60 }
- { offsetInCU: 0x3FAD, offset: 0x47C61, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TA', symObjAddr: 0x3530, symBinAddr: 0x144D0, symSize: 0x60 }
- { offsetInCU: 0x3FDD, offset: 0x47C91, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA.7', symObjAddr: 0x3590, symBinAddr: 0x14530, symSize: 0x90 }
- { offsetInCU: 0x4011, offset: 0x47CC5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVIegn_ACytIegnr_TRTA', symObjAddr: 0x3620, symBinAddr: 0x145C0, symSize: 0x20 }
- { offsetInCU: 0x4041, offset: 0x47CF5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TRTA', symObjAddr: 0x3640, symBinAddr: 0x145E0, symSize: 0x90 }
- { offsetInCU: 0x4071, offset: 0x47D25, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TRTA', symObjAddr: 0x36D0, symBinAddr: 0x14670, symSize: 0x80 }
- { offsetInCU: 0x40A1, offset: 0x47D55, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TRTATQ0_', symObjAddr: 0x3750, symBinAddr: 0x146F0, symSize: 0x50 }
- { offsetInCU: 0x40F5, offset: 0x47DA9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6ResultOAA6PlayerCSgIegnng_AceHytIegnnnr_TRTA', symObjAddr: 0x37A0, symBinAddr: 0x14740, symSize: 0x20 }
- { offsetInCU: 0x4129, offset: 0x47DDD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA4MoveVAA6PlayerCIegnng_AceGytIegnnnr_TRTA', symObjAddr: 0x37C0, symBinAddr: 0x14760, symSize: 0x20 }
- { offsetInCU: 0x415D, offset: 0x47E11, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA4MoveVAA6PlayerCSbIegnngy_AceGSbytIegnnnnr_TRTA', symObjAddr: 0x37E0, symBinAddr: 0x14780, symSize: 0x20 }
- { offsetInCU: 0x4191, offset: 0x47E45, size: 0x8, addend: 0x0, symName: '_$sS2i14DouShouQiModel5PieceVIegyyn_S2iACytIegnnnr_TRTA', symObjAddr: 0x3800, symBinAddr: 0x147A0, symSize: 0x20 }
- { offsetInCU: 0x41BA, offset: 0x47E6E, size: 0x8, addend: 0x0, symName: ___swift_mutable_project_boxed_opaque_existential_1, symObjAddr: 0x3820, symBinAddr: 0x147C0, symSize: 0x30 }
- { offsetInCU: 0x41CE, offset: 0x47E82, size: 0x8, addend: 0x0, symName: ___swift_assign_boxed_opaque_existential_1, symObjAddr: 0x3BF0, symBinAddr: 0x14B90, symSize: 0x130 }
...

@ -1,618 +0,0 @@
#if 0
#elif defined(__arm64__) && __arm64__
// Generated by Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
#ifndef DOUSHOUQIMODEL_SWIFT_H
#define DOUSHOUQIMODEL_SWIFT_H
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"
#if !defined(__has_include)
# define __has_include(x) 0
#endif
#if !defined(__has_attribute)
# define __has_attribute(x) 0
#endif
#if !defined(__has_feature)
# define __has_feature(x) 0
#endif
#if !defined(__has_warning)
# define __has_warning(x) 0
#endif
#if __has_include(<swift/objc-prologue.h>)
# include <swift/objc-prologue.h>
#endif
#pragma clang diagnostic ignored "-Wauto-import"
#if defined(__OBJC__)
#include <Foundation/Foundation.h>
#endif
#if defined(__cplusplus)
#include <cstdint>
#include <cstddef>
#include <cstdbool>
#include <cstring>
#include <stdlib.h>
#include <new>
#include <type_traits>
#else
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include <string.h>
#endif
#if defined(__cplusplus)
#if defined(__arm64e__) && __has_include(<ptrauth.h>)
# include <ptrauth.h>
#else
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreserved-macro-identifier"
# ifndef __ptrauth_swift_value_witness_function_pointer
# define __ptrauth_swift_value_witness_function_pointer(x)
# endif
# ifndef __ptrauth_swift_class_method_pointer
# define __ptrauth_swift_class_method_pointer(x)
# endif
#pragma clang diagnostic pop
#endif
#endif
#if !defined(SWIFT_TYPEDEFS)
# define SWIFT_TYPEDEFS 1
# if __has_include(<uchar.h>)
# include <uchar.h>
# elif !defined(__cplusplus)
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
# endif
typedef float swift_float2 __attribute__((__ext_vector_type__(2)));
typedef float swift_float3 __attribute__((__ext_vector_type__(3)));
typedef float swift_float4 __attribute__((__ext_vector_type__(4)));
typedef double swift_double2 __attribute__((__ext_vector_type__(2)));
typedef double swift_double3 __attribute__((__ext_vector_type__(3)));
typedef double swift_double4 __attribute__((__ext_vector_type__(4)));
typedef int swift_int2 __attribute__((__ext_vector_type__(2)));
typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2)));
typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3)));
typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
#endif
#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if !defined(SWIFT_CLASS_PROPERTY)
# if __has_feature(objc_class_property)
# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
# else
# define SWIFT_CLASS_PROPERTY(...)
# endif
#endif
#if !defined(SWIFT_RUNTIME_NAME)
# if __has_attribute(objc_runtime_name)
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
# else
# define SWIFT_RUNTIME_NAME(X)
# endif
#endif
#if !defined(SWIFT_COMPILE_NAME)
# if __has_attribute(swift_name)
# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
# else
# define SWIFT_COMPILE_NAME(X)
# endif
#endif
#if !defined(SWIFT_METHOD_FAMILY)
# if __has_attribute(objc_method_family)
# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
# else
# define SWIFT_METHOD_FAMILY(X)
# endif
#endif
#if !defined(SWIFT_NOESCAPE)
# if __has_attribute(noescape)
# define SWIFT_NOESCAPE __attribute__((noescape))
# else
# define SWIFT_NOESCAPE
# endif
#endif
#if !defined(SWIFT_RELEASES_ARGUMENT)
# if __has_attribute(ns_consumed)
# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
# else
# define SWIFT_RELEASES_ARGUMENT
# endif
#endif
#if !defined(SWIFT_WARN_UNUSED_RESULT)
# if __has_attribute(warn_unused_result)
# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
# else
# define SWIFT_WARN_UNUSED_RESULT
# endif
#endif
#if !defined(SWIFT_NORETURN)
# if __has_attribute(noreturn)
# define SWIFT_NORETURN __attribute__((noreturn))
# else
# define SWIFT_NORETURN
# endif
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_ENUM_EXTRA)
# define SWIFT_ENUM_EXTRA
#endif
#if !defined(SWIFT_CLASS)
# if __has_attribute(objc_subclassing_restricted)
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_RESILIENT_CLASS)
# if __has_attribute(objc_class_stub)
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
# else
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
# endif
#endif
#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif
#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if __has_attribute(objc_designated_initializer)
# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
# define OBJC_DESIGNATED_INITIALIZER
# endif
#endif
#if !defined(SWIFT_ENUM_ATTR)
# if __has_attribute(enum_extensibility)
# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
# else
# define SWIFT_ENUM_ATTR(_extensibility)
# endif
#endif
#if !defined(SWIFT_ENUM)
# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# if __has_feature(generalized_swift_name)
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# else
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
# endif
#endif
#if !defined(SWIFT_UNAVAILABLE)
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
#endif
#if !defined(SWIFT_UNAVAILABLE_MSG)
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
#endif
#if !defined(SWIFT_AVAILABILITY)
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
#endif
#if !defined(SWIFT_WEAK_IMPORT)
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
#endif
#if !defined(SWIFT_DEPRECATED)
# define SWIFT_DEPRECATED __attribute__((deprecated))
#endif
#if !defined(SWIFT_DEPRECATED_MSG)
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
#endif
#if !defined(SWIFT_DEPRECATED_OBJC)
# if __has_feature(attribute_diagnose_if_objc)
# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
# else
# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
# endif
#endif
#if defined(__OBJC__)
#if !defined(IBSegueAction)
# define IBSegueAction
#endif
#endif
#if !defined(SWIFT_EXTERN)
# if defined(__cplusplus)
# define SWIFT_EXTERN extern "C"
# else
# define SWIFT_EXTERN extern
# endif
#endif
#if !defined(SWIFT_CALL)
# define SWIFT_CALL __attribute__((swiftcall))
#endif
#if !defined(SWIFT_INDIRECT_RESULT)
# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result))
#endif
#if !defined(SWIFT_CONTEXT)
# define SWIFT_CONTEXT __attribute__((swift_context))
#endif
#if !defined(SWIFT_ERROR_RESULT)
# define SWIFT_ERROR_RESULT __attribute__((swift_error_result))
#endif
#if defined(__cplusplus)
# define SWIFT_NOEXCEPT noexcept
#else
# define SWIFT_NOEXCEPT
#endif
#if !defined(SWIFT_C_INLINE_THUNK)
# if __has_attribute(always_inline)
# if __has_attribute(nodebug)
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug))
# else
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline))
# endif
# else
# define SWIFT_C_INLINE_THUNK inline
# endif
#endif
#if defined(_WIN32)
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport)
#endif
#else
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL
#endif
#endif
#if defined(__OBJC__)
#if __has_feature(objc_modules)
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
#endif
#endif
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
#if __has_warning("-Wpragma-clang-attribute")
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
#endif
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wnullability"
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"
#if __has_attribute(external_source_symbol)
# pragma push_macro("any")
# undef any
# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="DouShouQiModel",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
# pragma pop_macro("any")
#endif
#if defined(__OBJC__)
#endif
#if __has_attribute(external_source_symbol)
# pragma clang attribute pop
#endif
#if defined(__cplusplus)
#endif
#pragma clang diagnostic pop
#endif
#elif defined(__x86_64__) && __x86_64__
// Generated by Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
#ifndef DOUSHOUQIMODEL_SWIFT_H
#define DOUSHOUQIMODEL_SWIFT_H
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"
#if !defined(__has_include)
# define __has_include(x) 0
#endif
#if !defined(__has_attribute)
# define __has_attribute(x) 0
#endif
#if !defined(__has_feature)
# define __has_feature(x) 0
#endif
#if !defined(__has_warning)
# define __has_warning(x) 0
#endif
#if __has_include(<swift/objc-prologue.h>)
# include <swift/objc-prologue.h>
#endif
#pragma clang diagnostic ignored "-Wauto-import"
#if defined(__OBJC__)
#include <Foundation/Foundation.h>
#endif
#if defined(__cplusplus)
#include <cstdint>
#include <cstddef>
#include <cstdbool>
#include <cstring>
#include <stdlib.h>
#include <new>
#include <type_traits>
#else
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include <string.h>
#endif
#if defined(__cplusplus)
#if defined(__arm64e__) && __has_include(<ptrauth.h>)
# include <ptrauth.h>
#else
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreserved-macro-identifier"
# ifndef __ptrauth_swift_value_witness_function_pointer
# define __ptrauth_swift_value_witness_function_pointer(x)
# endif
# ifndef __ptrauth_swift_class_method_pointer
# define __ptrauth_swift_class_method_pointer(x)
# endif
#pragma clang diagnostic pop
#endif
#endif
#if !defined(SWIFT_TYPEDEFS)
# define SWIFT_TYPEDEFS 1
# if __has_include(<uchar.h>)
# include <uchar.h>
# elif !defined(__cplusplus)
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
# endif
typedef float swift_float2 __attribute__((__ext_vector_type__(2)));
typedef float swift_float3 __attribute__((__ext_vector_type__(3)));
typedef float swift_float4 __attribute__((__ext_vector_type__(4)));
typedef double swift_double2 __attribute__((__ext_vector_type__(2)));
typedef double swift_double3 __attribute__((__ext_vector_type__(3)));
typedef double swift_double4 __attribute__((__ext_vector_type__(4)));
typedef int swift_int2 __attribute__((__ext_vector_type__(2)));
typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2)));
typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3)));
typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
#endif
#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if !defined(SWIFT_CLASS_PROPERTY)
# if __has_feature(objc_class_property)
# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
# else
# define SWIFT_CLASS_PROPERTY(...)
# endif
#endif
#if !defined(SWIFT_RUNTIME_NAME)
# if __has_attribute(objc_runtime_name)
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
# else
# define SWIFT_RUNTIME_NAME(X)
# endif
#endif
#if !defined(SWIFT_COMPILE_NAME)
# if __has_attribute(swift_name)
# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
# else
# define SWIFT_COMPILE_NAME(X)
# endif
#endif
#if !defined(SWIFT_METHOD_FAMILY)
# if __has_attribute(objc_method_family)
# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
# else
# define SWIFT_METHOD_FAMILY(X)
# endif
#endif
#if !defined(SWIFT_NOESCAPE)
# if __has_attribute(noescape)
# define SWIFT_NOESCAPE __attribute__((noescape))
# else
# define SWIFT_NOESCAPE
# endif
#endif
#if !defined(SWIFT_RELEASES_ARGUMENT)
# if __has_attribute(ns_consumed)
# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
# else
# define SWIFT_RELEASES_ARGUMENT
# endif
#endif
#if !defined(SWIFT_WARN_UNUSED_RESULT)
# if __has_attribute(warn_unused_result)
# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
# else
# define SWIFT_WARN_UNUSED_RESULT
# endif
#endif
#if !defined(SWIFT_NORETURN)
# if __has_attribute(noreturn)
# define SWIFT_NORETURN __attribute__((noreturn))
# else
# define SWIFT_NORETURN
# endif
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_ENUM_EXTRA)
# define SWIFT_ENUM_EXTRA
#endif
#if !defined(SWIFT_CLASS)
# if __has_attribute(objc_subclassing_restricted)
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_RESILIENT_CLASS)
# if __has_attribute(objc_class_stub)
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
# else
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
# endif
#endif
#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif
#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if __has_attribute(objc_designated_initializer)
# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
# define OBJC_DESIGNATED_INITIALIZER
# endif
#endif
#if !defined(SWIFT_ENUM_ATTR)
# if __has_attribute(enum_extensibility)
# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
# else
# define SWIFT_ENUM_ATTR(_extensibility)
# endif
#endif
#if !defined(SWIFT_ENUM)
# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# if __has_feature(generalized_swift_name)
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# else
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
# endif
#endif
#if !defined(SWIFT_UNAVAILABLE)
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
#endif
#if !defined(SWIFT_UNAVAILABLE_MSG)
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
#endif
#if !defined(SWIFT_AVAILABILITY)
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
#endif
#if !defined(SWIFT_WEAK_IMPORT)
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
#endif
#if !defined(SWIFT_DEPRECATED)
# define SWIFT_DEPRECATED __attribute__((deprecated))
#endif
#if !defined(SWIFT_DEPRECATED_MSG)
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
#endif
#if !defined(SWIFT_DEPRECATED_OBJC)
# if __has_feature(attribute_diagnose_if_objc)
# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
# else
# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
# endif
#endif
#if defined(__OBJC__)
#if !defined(IBSegueAction)
# define IBSegueAction
#endif
#endif
#if !defined(SWIFT_EXTERN)
# if defined(__cplusplus)
# define SWIFT_EXTERN extern "C"
# else
# define SWIFT_EXTERN extern
# endif
#endif
#if !defined(SWIFT_CALL)
# define SWIFT_CALL __attribute__((swiftcall))
#endif
#if !defined(SWIFT_INDIRECT_RESULT)
# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result))
#endif
#if !defined(SWIFT_CONTEXT)
# define SWIFT_CONTEXT __attribute__((swift_context))
#endif
#if !defined(SWIFT_ERROR_RESULT)
# define SWIFT_ERROR_RESULT __attribute__((swift_error_result))
#endif
#if defined(__cplusplus)
# define SWIFT_NOEXCEPT noexcept
#else
# define SWIFT_NOEXCEPT
#endif
#if !defined(SWIFT_C_INLINE_THUNK)
# if __has_attribute(always_inline)
# if __has_attribute(nodebug)
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug))
# else
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline))
# endif
# else
# define SWIFT_C_INLINE_THUNK inline
# endif
#endif
#if defined(_WIN32)
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport)
#endif
#else
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL
#endif
#endif
#if defined(__OBJC__)
#if __has_feature(objc_modules)
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
#endif
#endif
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
#if __has_warning("-Wpragma-clang-attribute")
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
#endif
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wnullability"
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"
#if __has_attribute(external_source_symbol)
# pragma push_macro("any")
# undef any
# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="DouShouQiModel",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
# pragma pop_macro("any")
#endif
#if defined(__OBJC__)
#endif
#if __has_attribute(external_source_symbol)
# pragma clang attribute pop
#endif
#if defined(__cplusplus)
#endif
#pragma clang diagnostic pop
#endif
#else
#error unsupported Swift architecture
#endif

@ -1,18 +0,0 @@
//
// DouShouQiModel.h
// DouShouQiModel
//
// Created by Marc Chevaldonné on 14/05/2024.
//
#import <Foundation/Foundation.h>
//! Project version number for DouShouQiModel.
FOUNDATION_EXPORT double DouShouQiModelVersionNumber;
//! Project version string for DouShouQiModel.
FOUNDATION_EXPORT const unsigned char DouShouQiModelVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <DouShouQiModel/PublicHeader.h>

@ -1,266 +0,0 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
// swift-module-flags: -target arm64-apple-macos13.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name DouShouQiModel
// swift-module-flags-ignorable: -enable-bare-slash-regex
@_exported import DouShouQiModel
import Foundation
import Swift
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
public enum Result : Swift.Equatable {
case notFinished
case even
case winner(winner: DouShouQiModel.Owner, reason: DouShouQiModel.WinningReason)
public static func == (a: DouShouQiModel.Result, b: DouShouQiModel.Result) -> Swift.Bool
}
public enum WinningReason {
case denReached, noMorePieces, tooManyOccurences, noMovesLeft
public static func == (a: DouShouQiModel.WinningReason, b: DouShouQiModel.WinningReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
public enum BoardResult : Swift.Equatable {
case unknown
case ok(piece: DouShouQiModel.Piece?)
case failed(reason: DouShouQiModel.BoardFailingReason)
public static func == (a: DouShouQiModel.BoardResult, b: DouShouQiModel.BoardResult) -> Swift.Bool
}
public enum BoardFailingReason {
case unknown, outOfBounds, cellNotEmpty, cellEmpty
public static func == (a: DouShouQiModel.BoardFailingReason, b: DouShouQiModel.BoardFailingReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class HumanPlayer : DouShouQiModel.Player {
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner, andInputMethod input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
public func changeInput(input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(_ move: DouShouQiModel.Move?) async throws
#endif
@objc deinit
}
public struct ClassicRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public struct Cell : Swift.CustomStringConvertible, Swift.Equatable {
public var description: Swift.String {
get
}
public let cellType: DouShouQiModel.CellType
public let initialOwner: DouShouQiModel.Owner
public var piece: DouShouQiModel.Piece?
public init(ofType cellType: DouShouQiModel.CellType, ownedBy initialOwner: DouShouQiModel.Owner = .noOne, withPiece piece: DouShouQiModel.Piece? = nil)
public static func == (a: DouShouQiModel.Cell, b: DouShouQiModel.Cell) -> Swift.Bool
}
public struct VerySimpleRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public protocol Rules {
static func createBoard() -> DouShouQiModel.Board
static func checkBoard(_ board: DouShouQiModel.Board) throws
func getNextPlayer() -> DouShouQiModel.Owner
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
func isMoveValid(onBoard: DouShouQiModel.Board, fromRow: Swift.Int, andFromColumn: Swift.Int, toRow: Swift.Int, andToColumn: Swift.Int) -> Swift.Bool
func isMoveValid(onBoard: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
func isGameOver(withBoard: DouShouQiModel.Board, andLastRowPlayed: Swift.Int, andLastColumnPlayer: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
var occurences: [DouShouQiModel.Board : Swift.Int] { get }
var historic: [DouShouQiModel.Move] { get }
}
public class Player {
final public let name: Swift.String
final public let id: DouShouQiModel.Owner
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addPlayedCallbacksListener(_ listener: @escaping (DouShouQiModel.Move?, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func notifyPlayed(withMove move: DouShouQiModel.Move?, andPlayer player: DouShouQiModel.Player) async throws
#endif
@objc deinit
}
public enum GameError : Swift.Error {
case invalidMove, nextPlayerError, badPlayerId(message: Swift.String), invalidRules, invalidPlayer, invalidGame, invalidBoard
}
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.IAPlayer {
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public enum CellType : Swift.CaseIterable {
case unknown, jungle, water, trap, den
public static func == (a: DouShouQiModel.CellType, b: DouShouQiModel.CellType) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public typealias AllCases = [DouShouQiModel.CellType]
public static var allCases: [DouShouQiModel.CellType] {
get
}
public var hashValue: Swift.Int {
get
}
}
public struct Board : Swift.Hashable {
public func hash(into hasher: inout Swift.Hasher)
public let nbRows: Swift.Int
public let nbColumns: Swift.Int
public var grid: [[DouShouQiModel.Cell]] {
get
}
public init?(withGrid grid: [[DouShouQiModel.Cell]])
public func countPieces(of owner: DouShouQiModel.Owner) -> Swift.Int
public func countPieces() -> (nbOfPiecesOfPlayer1: Swift.Int, nbOfPiecesOfPlayer2: Swift.Int)
public mutating func insert(piece: DouShouQiModel.Piece, atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public mutating func removePiece(atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public static func == (a: DouShouQiModel.Board, b: DouShouQiModel.Board) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public struct Piece : Swift.CustomStringConvertible, Swift.Hashable {
public var description: Swift.String {
get
}
public let owner: DouShouQiModel.Owner
public let animal: DouShouQiModel.Animal
public init(withOwner owner: DouShouQiModel.Owner, andAnimal animal: DouShouQiModel.Animal)
public func hash(into hasher: inout Swift.Hasher)
public static func == (a: DouShouQiModel.Piece, b: DouShouQiModel.Piece) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public enum InvalidBoardError : Swift.Error, Swift.Equatable {
case unknownError
case badDimensions(nbRows: Swift.Int, nbColumns: Swift.Int)
case badCellType(cellType: DouShouQiModel.CellType, row: Swift.Int, column: Swift.Int)
case multipleOccurenceOfSamePiece(piece: DouShouQiModel.Piece)
case pieceWithNoOwner(piece: DouShouQiModel.Piece)
case pieceNotAllowedOnThisCell(piece: DouShouQiModel.Piece, cell: DouShouQiModel.Cell)
public static func == (a: DouShouQiModel.InvalidBoardError, b: DouShouQiModel.InvalidBoardError) -> Swift.Bool
}
public enum Owner {
case noOne, player1, player2
public var simpleDescription: Swift.String {
get
}
public static func == (a: DouShouQiModel.Owner, b: DouShouQiModel.Owner) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class IAPlayer : DouShouQiModel.Player {
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public struct Move : Swift.CustomStringConvertible, Swift.Equatable {
public let owner: DouShouQiModel.Owner
public let rowOrigin: Swift.Int
public let columnOrigin: Swift.Int
public let rowDestination: Swift.Int
public let columnDestination: Swift.Int
public init(of owner: DouShouQiModel.Owner, fromRow rowOrigin: Swift.Int, andFromColumn colOrigin: Swift.Int, toRow rowDest: Swift.Int, andToColumn colDest: Swift.Int)
public var description: Swift.String {
get
}
public static func == (a: DouShouQiModel.Move, b: DouShouQiModel.Move) -> Swift.Bool
}
public enum Animal : Swift.Int {
case rat, cat, dog, wolf, leopard, tiger, lion, elephant
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
public class Game {
public var board: DouShouQiModel.Board {
get
}
public var rules: any DouShouQiModel.Rules {
get
}
final public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
public init(withRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public init(withBoard board: DouShouQiModel.Board, andRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
#endif
public func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addPieceRemovedListener(_ listener: @escaping (Swift.Int, Swift.Int, DouShouQiModel.Piece) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func onPlayed(with move: DouShouQiModel.Move?, from player: DouShouQiModel.Player) async throws
#endif
public var isOver: Swift.Bool {
get
}
#if compiler(>=5.3) && $AsyncAwait
public func start() async throws
#endif
@objc deinit
}
extension DouShouQiModel.WinningReason : Swift.Equatable {}
extension DouShouQiModel.WinningReason : Swift.Hashable {}
extension DouShouQiModel.BoardFailingReason : Swift.Equatable {}
extension DouShouQiModel.BoardFailingReason : Swift.Hashable {}
extension DouShouQiModel.CellType : Swift.Equatable {}
extension DouShouQiModel.CellType : Swift.Hashable {}
extension DouShouQiModel.Owner : Swift.Equatable {}
extension DouShouQiModel.Owner : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.Equatable {}
extension DouShouQiModel.Animal : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.RawRepresentable {}

@ -1,266 +0,0 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
// swift-module-flags: -target arm64-apple-macos13.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name DouShouQiModel
// swift-module-flags-ignorable: -enable-bare-slash-regex
@_exported import DouShouQiModel
import Foundation
import Swift
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
public enum Result : Swift.Equatable {
case notFinished
case even
case winner(winner: DouShouQiModel.Owner, reason: DouShouQiModel.WinningReason)
public static func == (a: DouShouQiModel.Result, b: DouShouQiModel.Result) -> Swift.Bool
}
public enum WinningReason {
case denReached, noMorePieces, tooManyOccurences, noMovesLeft
public static func == (a: DouShouQiModel.WinningReason, b: DouShouQiModel.WinningReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
public enum BoardResult : Swift.Equatable {
case unknown
case ok(piece: DouShouQiModel.Piece?)
case failed(reason: DouShouQiModel.BoardFailingReason)
public static func == (a: DouShouQiModel.BoardResult, b: DouShouQiModel.BoardResult) -> Swift.Bool
}
public enum BoardFailingReason {
case unknown, outOfBounds, cellNotEmpty, cellEmpty
public static func == (a: DouShouQiModel.BoardFailingReason, b: DouShouQiModel.BoardFailingReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class HumanPlayer : DouShouQiModel.Player {
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner, andInputMethod input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
public func changeInput(input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(_ move: DouShouQiModel.Move?) async throws
#endif
@objc deinit
}
public struct ClassicRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public struct Cell : Swift.CustomStringConvertible, Swift.Equatable {
public var description: Swift.String {
get
}
public let cellType: DouShouQiModel.CellType
public let initialOwner: DouShouQiModel.Owner
public var piece: DouShouQiModel.Piece?
public init(ofType cellType: DouShouQiModel.CellType, ownedBy initialOwner: DouShouQiModel.Owner = .noOne, withPiece piece: DouShouQiModel.Piece? = nil)
public static func == (a: DouShouQiModel.Cell, b: DouShouQiModel.Cell) -> Swift.Bool
}
public struct VerySimpleRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public protocol Rules {
static func createBoard() -> DouShouQiModel.Board
static func checkBoard(_ board: DouShouQiModel.Board) throws
func getNextPlayer() -> DouShouQiModel.Owner
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
func isMoveValid(onBoard: DouShouQiModel.Board, fromRow: Swift.Int, andFromColumn: Swift.Int, toRow: Swift.Int, andToColumn: Swift.Int) -> Swift.Bool
func isMoveValid(onBoard: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
func isGameOver(withBoard: DouShouQiModel.Board, andLastRowPlayed: Swift.Int, andLastColumnPlayer: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
var occurences: [DouShouQiModel.Board : Swift.Int] { get }
var historic: [DouShouQiModel.Move] { get }
}
public class Player {
final public let name: Swift.String
final public let id: DouShouQiModel.Owner
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addPlayedCallbacksListener(_ listener: @escaping (DouShouQiModel.Move?, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func notifyPlayed(withMove move: DouShouQiModel.Move?, andPlayer player: DouShouQiModel.Player) async throws
#endif
@objc deinit
}
public enum GameError : Swift.Error {
case invalidMove, nextPlayerError, badPlayerId(message: Swift.String), invalidRules, invalidPlayer, invalidGame, invalidBoard
}
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.IAPlayer {
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public enum CellType : Swift.CaseIterable {
case unknown, jungle, water, trap, den
public static func == (a: DouShouQiModel.CellType, b: DouShouQiModel.CellType) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public typealias AllCases = [DouShouQiModel.CellType]
public static var allCases: [DouShouQiModel.CellType] {
get
}
public var hashValue: Swift.Int {
get
}
}
public struct Board : Swift.Hashable {
public func hash(into hasher: inout Swift.Hasher)
public let nbRows: Swift.Int
public let nbColumns: Swift.Int
public var grid: [[DouShouQiModel.Cell]] {
get
}
public init?(withGrid grid: [[DouShouQiModel.Cell]])
public func countPieces(of owner: DouShouQiModel.Owner) -> Swift.Int
public func countPieces() -> (nbOfPiecesOfPlayer1: Swift.Int, nbOfPiecesOfPlayer2: Swift.Int)
public mutating func insert(piece: DouShouQiModel.Piece, atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public mutating func removePiece(atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public static func == (a: DouShouQiModel.Board, b: DouShouQiModel.Board) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public struct Piece : Swift.CustomStringConvertible, Swift.Hashable {
public var description: Swift.String {
get
}
public let owner: DouShouQiModel.Owner
public let animal: DouShouQiModel.Animal
public init(withOwner owner: DouShouQiModel.Owner, andAnimal animal: DouShouQiModel.Animal)
public func hash(into hasher: inout Swift.Hasher)
public static func == (a: DouShouQiModel.Piece, b: DouShouQiModel.Piece) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public enum InvalidBoardError : Swift.Error, Swift.Equatable {
case unknownError
case badDimensions(nbRows: Swift.Int, nbColumns: Swift.Int)
case badCellType(cellType: DouShouQiModel.CellType, row: Swift.Int, column: Swift.Int)
case multipleOccurenceOfSamePiece(piece: DouShouQiModel.Piece)
case pieceWithNoOwner(piece: DouShouQiModel.Piece)
case pieceNotAllowedOnThisCell(piece: DouShouQiModel.Piece, cell: DouShouQiModel.Cell)
public static func == (a: DouShouQiModel.InvalidBoardError, b: DouShouQiModel.InvalidBoardError) -> Swift.Bool
}
public enum Owner {
case noOne, player1, player2
public var simpleDescription: Swift.String {
get
}
public static func == (a: DouShouQiModel.Owner, b: DouShouQiModel.Owner) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class IAPlayer : DouShouQiModel.Player {
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public struct Move : Swift.CustomStringConvertible, Swift.Equatable {
public let owner: DouShouQiModel.Owner
public let rowOrigin: Swift.Int
public let columnOrigin: Swift.Int
public let rowDestination: Swift.Int
public let columnDestination: Swift.Int
public init(of owner: DouShouQiModel.Owner, fromRow rowOrigin: Swift.Int, andFromColumn colOrigin: Swift.Int, toRow rowDest: Swift.Int, andToColumn colDest: Swift.Int)
public var description: Swift.String {
get
}
public static func == (a: DouShouQiModel.Move, b: DouShouQiModel.Move) -> Swift.Bool
}
public enum Animal : Swift.Int {
case rat, cat, dog, wolf, leopard, tiger, lion, elephant
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
public class Game {
public var board: DouShouQiModel.Board {
get
}
public var rules: any DouShouQiModel.Rules {
get
}
final public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
public init(withRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public init(withBoard board: DouShouQiModel.Board, andRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
#endif
public func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addPieceRemovedListener(_ listener: @escaping (Swift.Int, Swift.Int, DouShouQiModel.Piece) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func onPlayed(with move: DouShouQiModel.Move?, from player: DouShouQiModel.Player) async throws
#endif
public var isOver: Swift.Bool {
get
}
#if compiler(>=5.3) && $AsyncAwait
public func start() async throws
#endif
@objc deinit
}
extension DouShouQiModel.WinningReason : Swift.Equatable {}
extension DouShouQiModel.WinningReason : Swift.Hashable {}
extension DouShouQiModel.BoardFailingReason : Swift.Equatable {}
extension DouShouQiModel.BoardFailingReason : Swift.Hashable {}
extension DouShouQiModel.CellType : Swift.Equatable {}
extension DouShouQiModel.CellType : Swift.Hashable {}
extension DouShouQiModel.Owner : Swift.Equatable {}
extension DouShouQiModel.Owner : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.Equatable {}
extension DouShouQiModel.Animal : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.RawRepresentable {}

@ -1,266 +0,0 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
// swift-module-flags: -target x86_64-apple-macos13.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name DouShouQiModel
// swift-module-flags-ignorable: -enable-bare-slash-regex
@_exported import DouShouQiModel
import Foundation
import Swift
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
public enum Result : Swift.Equatable {
case notFinished
case even
case winner(winner: DouShouQiModel.Owner, reason: DouShouQiModel.WinningReason)
public static func == (a: DouShouQiModel.Result, b: DouShouQiModel.Result) -> Swift.Bool
}
public enum WinningReason {
case denReached, noMorePieces, tooManyOccurences, noMovesLeft
public static func == (a: DouShouQiModel.WinningReason, b: DouShouQiModel.WinningReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
public enum BoardResult : Swift.Equatable {
case unknown
case ok(piece: DouShouQiModel.Piece?)
case failed(reason: DouShouQiModel.BoardFailingReason)
public static func == (a: DouShouQiModel.BoardResult, b: DouShouQiModel.BoardResult) -> Swift.Bool
}
public enum BoardFailingReason {
case unknown, outOfBounds, cellNotEmpty, cellEmpty
public static func == (a: DouShouQiModel.BoardFailingReason, b: DouShouQiModel.BoardFailingReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class HumanPlayer : DouShouQiModel.Player {
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner, andInputMethod input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
public func changeInput(input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(_ move: DouShouQiModel.Move?) async throws
#endif
@objc deinit
}
public struct ClassicRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public struct Cell : Swift.CustomStringConvertible, Swift.Equatable {
public var description: Swift.String {
get
}
public let cellType: DouShouQiModel.CellType
public let initialOwner: DouShouQiModel.Owner
public var piece: DouShouQiModel.Piece?
public init(ofType cellType: DouShouQiModel.CellType, ownedBy initialOwner: DouShouQiModel.Owner = .noOne, withPiece piece: DouShouQiModel.Piece? = nil)
public static func == (a: DouShouQiModel.Cell, b: DouShouQiModel.Cell) -> Swift.Bool
}
public struct VerySimpleRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public protocol Rules {
static func createBoard() -> DouShouQiModel.Board
static func checkBoard(_ board: DouShouQiModel.Board) throws
func getNextPlayer() -> DouShouQiModel.Owner
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
func isMoveValid(onBoard: DouShouQiModel.Board, fromRow: Swift.Int, andFromColumn: Swift.Int, toRow: Swift.Int, andToColumn: Swift.Int) -> Swift.Bool
func isMoveValid(onBoard: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
func isGameOver(withBoard: DouShouQiModel.Board, andLastRowPlayed: Swift.Int, andLastColumnPlayer: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
var occurences: [DouShouQiModel.Board : Swift.Int] { get }
var historic: [DouShouQiModel.Move] { get }
}
public class Player {
final public let name: Swift.String
final public let id: DouShouQiModel.Owner
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addPlayedCallbacksListener(_ listener: @escaping (DouShouQiModel.Move?, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func notifyPlayed(withMove move: DouShouQiModel.Move?, andPlayer player: DouShouQiModel.Player) async throws
#endif
@objc deinit
}
public enum GameError : Swift.Error {
case invalidMove, nextPlayerError, badPlayerId(message: Swift.String), invalidRules, invalidPlayer, invalidGame, invalidBoard
}
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.IAPlayer {
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public enum CellType : Swift.CaseIterable {
case unknown, jungle, water, trap, den
public static func == (a: DouShouQiModel.CellType, b: DouShouQiModel.CellType) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public typealias AllCases = [DouShouQiModel.CellType]
public static var allCases: [DouShouQiModel.CellType] {
get
}
public var hashValue: Swift.Int {
get
}
}
public struct Board : Swift.Hashable {
public func hash(into hasher: inout Swift.Hasher)
public let nbRows: Swift.Int
public let nbColumns: Swift.Int
public var grid: [[DouShouQiModel.Cell]] {
get
}
public init?(withGrid grid: [[DouShouQiModel.Cell]])
public func countPieces(of owner: DouShouQiModel.Owner) -> Swift.Int
public func countPieces() -> (nbOfPiecesOfPlayer1: Swift.Int, nbOfPiecesOfPlayer2: Swift.Int)
public mutating func insert(piece: DouShouQiModel.Piece, atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public mutating func removePiece(atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public static func == (a: DouShouQiModel.Board, b: DouShouQiModel.Board) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public struct Piece : Swift.CustomStringConvertible, Swift.Hashable {
public var description: Swift.String {
get
}
public let owner: DouShouQiModel.Owner
public let animal: DouShouQiModel.Animal
public init(withOwner owner: DouShouQiModel.Owner, andAnimal animal: DouShouQiModel.Animal)
public func hash(into hasher: inout Swift.Hasher)
public static func == (a: DouShouQiModel.Piece, b: DouShouQiModel.Piece) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public enum InvalidBoardError : Swift.Error, Swift.Equatable {
case unknownError
case badDimensions(nbRows: Swift.Int, nbColumns: Swift.Int)
case badCellType(cellType: DouShouQiModel.CellType, row: Swift.Int, column: Swift.Int)
case multipleOccurenceOfSamePiece(piece: DouShouQiModel.Piece)
case pieceWithNoOwner(piece: DouShouQiModel.Piece)
case pieceNotAllowedOnThisCell(piece: DouShouQiModel.Piece, cell: DouShouQiModel.Cell)
public static func == (a: DouShouQiModel.InvalidBoardError, b: DouShouQiModel.InvalidBoardError) -> Swift.Bool
}
public enum Owner {
case noOne, player1, player2
public var simpleDescription: Swift.String {
get
}
public static func == (a: DouShouQiModel.Owner, b: DouShouQiModel.Owner) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class IAPlayer : DouShouQiModel.Player {
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public struct Move : Swift.CustomStringConvertible, Swift.Equatable {
public let owner: DouShouQiModel.Owner
public let rowOrigin: Swift.Int
public let columnOrigin: Swift.Int
public let rowDestination: Swift.Int
public let columnDestination: Swift.Int
public init(of owner: DouShouQiModel.Owner, fromRow rowOrigin: Swift.Int, andFromColumn colOrigin: Swift.Int, toRow rowDest: Swift.Int, andToColumn colDest: Swift.Int)
public var description: Swift.String {
get
}
public static func == (a: DouShouQiModel.Move, b: DouShouQiModel.Move) -> Swift.Bool
}
public enum Animal : Swift.Int {
case rat, cat, dog, wolf, leopard, tiger, lion, elephant
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
public class Game {
public var board: DouShouQiModel.Board {
get
}
public var rules: any DouShouQiModel.Rules {
get
}
final public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
public init(withRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public init(withBoard board: DouShouQiModel.Board, andRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
#endif
public func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addPieceRemovedListener(_ listener: @escaping (Swift.Int, Swift.Int, DouShouQiModel.Piece) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func onPlayed(with move: DouShouQiModel.Move?, from player: DouShouQiModel.Player) async throws
#endif
public var isOver: Swift.Bool {
get
}
#if compiler(>=5.3) && $AsyncAwait
public func start() async throws
#endif
@objc deinit
}
extension DouShouQiModel.WinningReason : Swift.Equatable {}
extension DouShouQiModel.WinningReason : Swift.Hashable {}
extension DouShouQiModel.BoardFailingReason : Swift.Equatable {}
extension DouShouQiModel.BoardFailingReason : Swift.Hashable {}
extension DouShouQiModel.CellType : Swift.Equatable {}
extension DouShouQiModel.CellType : Swift.Hashable {}
extension DouShouQiModel.Owner : Swift.Equatable {}
extension DouShouQiModel.Owner : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.Equatable {}
extension DouShouQiModel.Animal : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.RawRepresentable {}

@ -1,266 +0,0 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
// swift-module-flags: -target x86_64-apple-macos13.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name DouShouQiModel
// swift-module-flags-ignorable: -enable-bare-slash-regex
@_exported import DouShouQiModel
import Foundation
import Swift
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
public enum Result : Swift.Equatable {
case notFinished
case even
case winner(winner: DouShouQiModel.Owner, reason: DouShouQiModel.WinningReason)
public static func == (a: DouShouQiModel.Result, b: DouShouQiModel.Result) -> Swift.Bool
}
public enum WinningReason {
case denReached, noMorePieces, tooManyOccurences, noMovesLeft
public static func == (a: DouShouQiModel.WinningReason, b: DouShouQiModel.WinningReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
public enum BoardResult : Swift.Equatable {
case unknown
case ok(piece: DouShouQiModel.Piece?)
case failed(reason: DouShouQiModel.BoardFailingReason)
public static func == (a: DouShouQiModel.BoardResult, b: DouShouQiModel.BoardResult) -> Swift.Bool
}
public enum BoardFailingReason {
case unknown, outOfBounds, cellNotEmpty, cellEmpty
public static func == (a: DouShouQiModel.BoardFailingReason, b: DouShouQiModel.BoardFailingReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class HumanPlayer : DouShouQiModel.Player {
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner, andInputMethod input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
public func changeInput(input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(_ move: DouShouQiModel.Move?) async throws
#endif
@objc deinit
}
public struct ClassicRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public struct Cell : Swift.CustomStringConvertible, Swift.Equatable {
public var description: Swift.String {
get
}
public let cellType: DouShouQiModel.CellType
public let initialOwner: DouShouQiModel.Owner
public var piece: DouShouQiModel.Piece?
public init(ofType cellType: DouShouQiModel.CellType, ownedBy initialOwner: DouShouQiModel.Owner = .noOne, withPiece piece: DouShouQiModel.Piece? = nil)
public static func == (a: DouShouQiModel.Cell, b: DouShouQiModel.Cell) -> Swift.Bool
}
public struct VerySimpleRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public protocol Rules {
static func createBoard() -> DouShouQiModel.Board
static func checkBoard(_ board: DouShouQiModel.Board) throws
func getNextPlayer() -> DouShouQiModel.Owner
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
func isMoveValid(onBoard: DouShouQiModel.Board, fromRow: Swift.Int, andFromColumn: Swift.Int, toRow: Swift.Int, andToColumn: Swift.Int) -> Swift.Bool
func isMoveValid(onBoard: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
func isGameOver(withBoard: DouShouQiModel.Board, andLastRowPlayed: Swift.Int, andLastColumnPlayer: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
var occurences: [DouShouQiModel.Board : Swift.Int] { get }
var historic: [DouShouQiModel.Move] { get }
}
public class Player {
final public let name: Swift.String
final public let id: DouShouQiModel.Owner
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addPlayedCallbacksListener(_ listener: @escaping (DouShouQiModel.Move?, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func notifyPlayed(withMove move: DouShouQiModel.Move?, andPlayer player: DouShouQiModel.Player) async throws
#endif
@objc deinit
}
public enum GameError : Swift.Error {
case invalidMove, nextPlayerError, badPlayerId(message: Swift.String), invalidRules, invalidPlayer, invalidGame, invalidBoard
}
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.IAPlayer {
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public enum CellType : Swift.CaseIterable {
case unknown, jungle, water, trap, den
public static func == (a: DouShouQiModel.CellType, b: DouShouQiModel.CellType) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public typealias AllCases = [DouShouQiModel.CellType]
public static var allCases: [DouShouQiModel.CellType] {
get
}
public var hashValue: Swift.Int {
get
}
}
public struct Board : Swift.Hashable {
public func hash(into hasher: inout Swift.Hasher)
public let nbRows: Swift.Int
public let nbColumns: Swift.Int
public var grid: [[DouShouQiModel.Cell]] {
get
}
public init?(withGrid grid: [[DouShouQiModel.Cell]])
public func countPieces(of owner: DouShouQiModel.Owner) -> Swift.Int
public func countPieces() -> (nbOfPiecesOfPlayer1: Swift.Int, nbOfPiecesOfPlayer2: Swift.Int)
public mutating func insert(piece: DouShouQiModel.Piece, atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public mutating func removePiece(atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public static func == (a: DouShouQiModel.Board, b: DouShouQiModel.Board) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public struct Piece : Swift.CustomStringConvertible, Swift.Hashable {
public var description: Swift.String {
get
}
public let owner: DouShouQiModel.Owner
public let animal: DouShouQiModel.Animal
public init(withOwner owner: DouShouQiModel.Owner, andAnimal animal: DouShouQiModel.Animal)
public func hash(into hasher: inout Swift.Hasher)
public static func == (a: DouShouQiModel.Piece, b: DouShouQiModel.Piece) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public enum InvalidBoardError : Swift.Error, Swift.Equatable {
case unknownError
case badDimensions(nbRows: Swift.Int, nbColumns: Swift.Int)
case badCellType(cellType: DouShouQiModel.CellType, row: Swift.Int, column: Swift.Int)
case multipleOccurenceOfSamePiece(piece: DouShouQiModel.Piece)
case pieceWithNoOwner(piece: DouShouQiModel.Piece)
case pieceNotAllowedOnThisCell(piece: DouShouQiModel.Piece, cell: DouShouQiModel.Cell)
public static func == (a: DouShouQiModel.InvalidBoardError, b: DouShouQiModel.InvalidBoardError) -> Swift.Bool
}
public enum Owner {
case noOne, player1, player2
public var simpleDescription: Swift.String {
get
}
public static func == (a: DouShouQiModel.Owner, b: DouShouQiModel.Owner) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class IAPlayer : DouShouQiModel.Player {
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public struct Move : Swift.CustomStringConvertible, Swift.Equatable {
public let owner: DouShouQiModel.Owner
public let rowOrigin: Swift.Int
public let columnOrigin: Swift.Int
public let rowDestination: Swift.Int
public let columnDestination: Swift.Int
public init(of owner: DouShouQiModel.Owner, fromRow rowOrigin: Swift.Int, andFromColumn colOrigin: Swift.Int, toRow rowDest: Swift.Int, andToColumn colDest: Swift.Int)
public var description: Swift.String {
get
}
public static func == (a: DouShouQiModel.Move, b: DouShouQiModel.Move) -> Swift.Bool
}
public enum Animal : Swift.Int {
case rat, cat, dog, wolf, leopard, tiger, lion, elephant
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
public class Game {
public var board: DouShouQiModel.Board {
get
}
public var rules: any DouShouQiModel.Rules {
get
}
final public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
public init(withRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public init(withBoard board: DouShouQiModel.Board, andRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
#endif
public func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addPieceRemovedListener(_ listener: @escaping (Swift.Int, Swift.Int, DouShouQiModel.Piece) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func onPlayed(with move: DouShouQiModel.Move?, from player: DouShouQiModel.Player) async throws
#endif
public var isOver: Swift.Bool {
get
}
#if compiler(>=5.3) && $AsyncAwait
public func start() async throws
#endif
@objc deinit
}
extension DouShouQiModel.WinningReason : Swift.Equatable {}
extension DouShouQiModel.WinningReason : Swift.Hashable {}
extension DouShouQiModel.BoardFailingReason : Swift.Equatable {}
extension DouShouQiModel.BoardFailingReason : Swift.Hashable {}
extension DouShouQiModel.CellType : Swift.Equatable {}
extension DouShouQiModel.CellType : Swift.Hashable {}
extension DouShouQiModel.Owner : Swift.Equatable {}
extension DouShouQiModel.Owner : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.Equatable {}
extension DouShouQiModel.Animal : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.RawRepresentable {}

@ -1,11 +0,0 @@
framework module DouShouQiModel {
umbrella header "DouShouQiModel.h"
export *
module * { export * }
}
module DouShouQiModel.Swift {
header "DouShouQiModel-Swift.h"
requires objc
}

@ -1,46 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>23E224</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>DouShouQiModel</string>
<key>CFBundleIdentifier</key>
<string>fr.uca.iut.DouShouQiModel</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>DouShouQiModel</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
<key>CFBundleVersion</key>
<string>1</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string></string>
<key>DTPlatformName</key>
<string>macosx</string>
<key>DTPlatformVersion</key>
<string>14.2</string>
<key>DTSDKBuild</key>
<string>23C53</string>
<key>DTSDKName</key>
<string>macosx14.2</string>
<key>DTXcode</key>
<string>1520</string>
<key>DTXcodeBuild</key>
<string>15C500b</string>
<key>LSMinimumSystemVersion</key>
<string>13.0</string>
</dict>
</plist>

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleIdentifier</key>
<string>com.apple.xcode.dsym.fr.uca.iut.DouShouQiModel</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>dSYM</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>

@ -1,505 +0,0 @@
---
triple: 'arm64-apple-darwin'
binary-path: '/Users/marcchevaldonne/Library/Developer/Xcode/DerivedData/DouShouQiModel-bzzvovsrfmbhuydeirorjmljgtyf/Build/Intermediates.noindex/ArchiveIntermediates/DouShouQiModel/InstallationBuildProductsLocation/Library/Frameworks/DouShouQiModel.framework/Versions/A/DouShouQiModel'
relocations:
- { offsetInCU: 0x34, offset: 0x84A45, size: 0x8, addend: 0x0, symName: _DouShouQiModelVersionString, symObjAddr: 0x0, symBinAddr: 0x14E10, symSize: 0x0 }
- { offsetInCU: 0x69, offset: 0x84A7A, size: 0x8, addend: 0x0, symName: _DouShouQiModelVersionNumber, symObjAddr: 0x38, symBinAddr: 0x14E48, symSize: 0x0 }
- { offsetInCU: 0x27, offset: 0x84AB7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x4CD8, symSize: 0x4 }
- { offsetInCU: 0x4B, offset: 0x84ADB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x4CD8, symSize: 0x4 }
- { offsetInCU: 0x6E, offset: 0x84AFE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0x4CF0, symSize: 0x4 }
- { offsetInCU: 0x8E, offset: 0x84B1E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0x4CF0, symSize: 0x4 }
- { offsetInCU: 0x9F, offset: 0x84B2F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x148, symBinAddr: 0x4E20, symSize: 0x68 }
- { offsetInCU: 0xDD, offset: 0x84B6D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO2eeoiySbAC_ACtFZ', symObjAddr: 0x4, symBinAddr: 0x4CDC, symSize: 0x14 }
- { offsetInCU: 0x110, offset: 0x84BA0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO4hash4intoys6HasherVz_tF', symObjAddr: 0x1C, symBinAddr: 0x4CF4, symSize: 0x28 }
- { offsetInCU: 0x1A6, offset: 0x84C36, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO9hashValueSivg', symObjAddr: 0x44, symBinAddr: 0x4D1C, symSize: 0x44 }
- { offsetInCU: 0x2A0, offset: 0x84D30, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0x4D60, symSize: 0x14 }
- { offsetInCU: 0x2C0, offset: 0x84D50, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0x4D60, symSize: 0x14 }
- { offsetInCU: 0x300, offset: 0x84D90, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH9hashValueSivgTW', symObjAddr: 0x9C, symBinAddr: 0x4D74, symSize: 0x44 }
- { offsetInCU: 0x3E3, offset: 0x84E73, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x4DB8, symSize: 0x28 }
- { offsetInCU: 0x46C, offset: 0x84EFC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASQWb', symObjAddr: 0x1B0, symBinAddr: 0x4E88, symSize: 0x4 }
- { offsetInCU: 0x480, offset: 0x84F10, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOACSQAAWl', symObjAddr: 0x1B4, symBinAddr: 0x4E8C, symSize: 0x44 }
- { offsetInCU: 0x494, offset: 0x84F24, size: 0x8, addend: 0x0, symName: ___swift_memcpy2_1, symObjAddr: 0x1F8, symBinAddr: 0x4ED0, symSize: 0xC }
- { offsetInCU: 0x4A8, offset: 0x84F38, size: 0x8, addend: 0x0, symName: ___swift_noop_void_return, symObjAddr: 0x204, symBinAddr: 0x4EDC, symSize: 0x4 }
- { offsetInCU: 0x4BC, offset: 0x84F4C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwet', symObjAddr: 0x208, symBinAddr: 0x4EE0, symSize: 0xAC }
- { offsetInCU: 0x4D0, offset: 0x84F60, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwst', symObjAddr: 0x2B4, symBinAddr: 0x4F8C, symSize: 0xC4 }
- { offsetInCU: 0x4E4, offset: 0x84F74, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwug', symObjAddr: 0x378, symBinAddr: 0x5050, symSize: 0x14 }
- { offsetInCU: 0x4F8, offset: 0x84F88, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwup', symObjAddr: 0x38C, symBinAddr: 0x5064, symSize: 0x4 }
- { offsetInCU: 0x50C, offset: 0x84F9C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwui', symObjAddr: 0x390, symBinAddr: 0x5068, symSize: 0x24 }
- { offsetInCU: 0x520, offset: 0x84FB0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOMa', symObjAddr: 0x3B4, symBinAddr: 0x508C, symSize: 0x10 }
- { offsetInCU: 0x534, offset: 0x84FC4, size: 0x8, addend: 0x0, symName: ___swift_memcpy1_1, symObjAddr: 0x3C4, symBinAddr: 0x509C, symSize: 0xC }
- { offsetInCU: 0x548, offset: 0x84FD8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwet', symObjAddr: 0x3D0, symBinAddr: 0x50A8, symSize: 0x90 }
- { offsetInCU: 0x55C, offset: 0x84FEC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwst', symObjAddr: 0x460, symBinAddr: 0x5138, symSize: 0xBC }
- { offsetInCU: 0x570, offset: 0x85000, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwug', symObjAddr: 0x51C, symBinAddr: 0x51F4, symSize: 0x8 }
- { offsetInCU: 0x584, offset: 0x85014, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwup', symObjAddr: 0x524, symBinAddr: 0x51FC, symSize: 0x4 }
- { offsetInCU: 0x598, offset: 0x85028, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwui', symObjAddr: 0x528, symBinAddr: 0x5200, symSize: 0x8 }
- { offsetInCU: 0x5AC, offset: 0x8503C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOMa', symObjAddr: 0x530, symBinAddr: 0x5208, symSize: 0x10 }
- { offsetInCU: 0x628, offset: 0x850B8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x108, symBinAddr: 0x4DE0, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x851FC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x5218, symSize: 0x4 }
- { offsetInCU: 0x4B, offset: 0x85220, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x5218, symSize: 0x4 }
- { offsetInCU: 0x6E, offset: 0x85243, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0x5230, symSize: 0x4 }
- { offsetInCU: 0x8E, offset: 0x85263, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0x5230, symSize: 0x4 }
- { offsetInCU: 0x9F, offset: 0x85274, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x148, symBinAddr: 0x5360, symSize: 0x7C }
- { offsetInCU: 0xF5, offset: 0x852CA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO2eeoiySbAC_ACtFZ', symObjAddr: 0x4, symBinAddr: 0x521C, symSize: 0x14 }
- { offsetInCU: 0x128, offset: 0x852FD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO4hash4intoys6HasherVz_tF', symObjAddr: 0x1C, symBinAddr: 0x5234, symSize: 0x28 }
- { offsetInCU: 0x1BE, offset: 0x85393, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO9hashValueSivg', symObjAddr: 0x44, symBinAddr: 0x525C, symSize: 0x44 }
- { offsetInCU: 0x2B8, offset: 0x8548D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0x52A0, symSize: 0x14 }
- { offsetInCU: 0x2D8, offset: 0x854AD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0x52A0, symSize: 0x14 }
- { offsetInCU: 0x318, offset: 0x854ED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH9hashValueSivgTW', symObjAddr: 0x9C, symBinAddr: 0x52B4, symSize: 0x44 }
- { offsetInCU: 0x3FB, offset: 0x855D0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x52F8, symSize: 0x28 }
- { offsetInCU: 0x484, offset: 0x85659, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASQWb', symObjAddr: 0x1C4, symBinAddr: 0x53DC, symSize: 0x4 }
- { offsetInCU: 0x498, offset: 0x8566D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOACSQAAWl', symObjAddr: 0x1C8, symBinAddr: 0x53E0, symSize: 0x44 }
- { offsetInCU: 0x4AC, offset: 0x85681, size: 0x8, addend: 0x0, symName: ___swift_memcpy3_1, symObjAddr: 0x20C, symBinAddr: 0x5424, symSize: 0x14 }
- { offsetInCU: 0x4C0, offset: 0x85695, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwet', symObjAddr: 0x224, symBinAddr: 0x5438, symSize: 0x74 }
- { offsetInCU: 0x4D4, offset: 0x856A9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwst', symObjAddr: 0x298, symBinAddr: 0x54AC, symSize: 0x8C }
- { offsetInCU: 0x4E8, offset: 0x856BD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwug', symObjAddr: 0x324, symBinAddr: 0x5538, symSize: 0x18 }
- { offsetInCU: 0x4FC, offset: 0x856D1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwup', symObjAddr: 0x33C, symBinAddr: 0x5550, symSize: 0x4 }
- { offsetInCU: 0x510, offset: 0x856E5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwui', symObjAddr: 0x340, symBinAddr: 0x5554, symSize: 0x18 }
- { offsetInCU: 0x524, offset: 0x856F9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOMa', symObjAddr: 0x358, symBinAddr: 0x556C, symSize: 0x10 }
- { offsetInCU: 0x538, offset: 0x8570D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwet', symObjAddr: 0x374, symBinAddr: 0x557C, symSize: 0x90 }
- { offsetInCU: 0x54C, offset: 0x85721, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwst', symObjAddr: 0x404, symBinAddr: 0x560C, symSize: 0xBC }
- { offsetInCU: 0x560, offset: 0x85735, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwug', symObjAddr: 0x4C0, symBinAddr: 0x56C8, symSize: 0x8 }
- { offsetInCU: 0x574, offset: 0x85749, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwup', symObjAddr: 0x4C8, symBinAddr: 0x56D0, symSize: 0x4 }
- { offsetInCU: 0x588, offset: 0x8575D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwui', symObjAddr: 0x4CC, symBinAddr: 0x56D4, symSize: 0x8 }
- { offsetInCU: 0x59C, offset: 0x85771, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOMa', symObjAddr: 0x4D4, symBinAddr: 0x56DC, symSize: 0x10 }
- { offsetInCU: 0x5FC, offset: 0x857D1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x108, symBinAddr: 0x5320, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x85901, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfC', symObjAddr: 0x0, symBinAddr: 0x56EC, symSize: 0xD0 }
- { offsetInCU: 0x99, offset: 0x85973, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfC', symObjAddr: 0x0, symBinAddr: 0x56EC, symSize: 0xD0 }
- { offsetInCU: 0xEE, offset: 0x859C8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfc', symObjAddr: 0xD0, symBinAddr: 0x57BC, symSize: 0xB0 }
- { offsetInCU: 0x189, offset: 0x85A63, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x190, symBinAddr: 0x587C, symSize: 0xA0 }
- { offsetInCU: 0x1DE, offset: 0x85AB8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x230, symBinAddr: 0x591C, symSize: 0x70 }
- { offsetInCU: 0x22D, offset: 0x85B07, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x2A0, symBinAddr: 0x598C, symSize: 0xC }
- { offsetInCU: 0x2A9, offset: 0x85B83, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC11changeInput5inputyAA4MoveVSgACc_tF', symObjAddr: 0x2AC, symBinAddr: 0x5998, symSize: 0x38 }
- { offsetInCU: 0x310, offset: 0x85BEA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKF', symObjAddr: 0x2E4, symBinAddr: 0x59D0, symSize: 0x2C }
- { offsetInCU: 0x384, offset: 0x85C5E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY0_', symObjAddr: 0x310, symBinAddr: 0x59FC, symSize: 0x108 }
- { offsetInCU: 0x507, offset: 0x85DE1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTQ1_', symObjAddr: 0x418, symBinAddr: 0x5B04, symSize: 0x70 }
- { offsetInCU: 0x5BF, offset: 0x85E99, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY2_', symObjAddr: 0x488, symBinAddr: 0x5B74, symSize: 0x100 }
- { offsetInCU: 0x6AE, offset: 0x85F88, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY3_', symObjAddr: 0x588, symBinAddr: 0x5C74, symSize: 0x40 }
- { offsetInCU: 0x70C, offset: 0x85FE6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfd', symObjAddr: 0x5D0, symBinAddr: 0x5CBC, symSize: 0x2C }
- { offsetInCU: 0x75D, offset: 0x86037, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfD', symObjAddr: 0x5FC, symBinAddr: 0x5CE8, symSize: 0x34 }
- { offsetInCU: 0x87E, offset: 0x86158, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCAA4MoveVSgIeggr_SgWOe', symObjAddr: 0x180, symBinAddr: 0x586C, symSize: 0x10 }
- { offsetInCU: 0x92D, offset: 0x86207, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfE', symObjAddr: 0x5C8, symBinAddr: 0x5CB4, symSize: 0x8 }
- { offsetInCU: 0x95A, offset: 0x86234, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCMa', symObjAddr: 0x630, symBinAddr: 0x5D1C, symSize: 0x20 }
- { offsetInCU: 0x4F, offset: 0x863DC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11initialGridSaySayAA4CellVGGvpZ', symObjAddr: 0x29998, symBinAddr: 0x1DB40, symSize: 0x0 }
- { offsetInCU: 0x69, offset: 0x863F6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV6pieces33_DFC7A53241A8EF79AF2B79A48A65C265LLShyAA5PieceVGvpZ', symObjAddr: 0x6D30, symBinAddr: 0x1C720, symSize: 0x0 }
- { offsetInCU: 0xD7, offset: 0x86464, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZ', symObjAddr: 0x6D38, symBinAddr: 0x1C728, symSize: 0x0 }
- { offsetInCU: 0xF1, offset: 0x8647E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15iteratingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardV_S2itKcGvpZ', symObjAddr: 0x6D40, symBinAddr: 0x1C730, symSize: 0x0 }
- { offsetInCU: 0x10B, offset: 0x86498, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12endingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZ', symObjAddr: 0x6D48, symBinAddr: 0x1C738, symSize: 0x0 }
- { offsetInCU: 0x125, offset: 0x864B2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16placesByCellTypeSDyAA0iJ0OSaySi3row_Si3coltGGvpZ', symObjAddr: 0x299A0, symBinAddr: 0x1DB48, symSize: 0x0 }
- { offsetInCU: 0x284, offset: 0x86611, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0x5E08, symSize: 0x2DC }
- { offsetInCU: 0xA99, offset: 0x86E26, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11createBoardAA0H0VyFZ', symObjAddr: 0x2DC, symBinAddr: 0x60E4, symSize: 0x78 }
- { offsetInCU: 0xAD7, offset: 0x86E64, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10checkBoardyyAA0H0VKFZ', symObjAddr: 0x354, symBinAddr: 0x615C, symSize: 0x14 }
- { offsetInCU: 0xB01, offset: 0x86E8E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZfiyAGcfU_', symObjAddr: 0x3AC, symBinAddr: 0x61B4, symSize: 0x30 }
- { offsetInCU: 0xB41, offset: 0x86ECE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZfiyAGcfU0_', symObjAddr: 0x3DC, symBinAddr: 0x61E4, symSize: 0x78 }
- { offsetInCU: 0xB93, offset: 0x86F20, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVACycfC', symObjAddr: 0x6A8, symBinAddr: 0x64B0, symSize: 0x30 }
- { offsetInCU: 0xBD8, offset: 0x86F65, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10occurences8historicACSDyAA5BoardVSiG_SayAA4MoveVGtcfC', symObjAddr: 0x6D8, symBinAddr: 0x64E0, symSize: 0x54 }
- { offsetInCU: 0xC3D, offset: 0x86FCA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV19findAuthorizedMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL5boardSayAA4MoveVGAA5BoardV_tF', symObjAddr: 0x72C, symBinAddr: 0x6534, symSize: 0x458 }
- { offsetInCU: 0x15D4, offset: 0x87961, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12findRatMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0xB84, symBinAddr: 0x698C, symSize: 0x62C }
- { offsetInCU: 0x1FE8, offset: 0x88375, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV17findElephantMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x11B0, symBinAddr: 0x6FB8, symSize: 0x5F8 }
- { offsetInCU: 0x295A, offset: 0x88CE7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16findDefaultMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x17A8, symBinAddr: 0x75B0, symSize: 0x6C4 }
- { offsetInCU: 0x340F, offset: 0x8979C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV21findTigerAndLionMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x1E6C, symBinAddr: 0x7C74, symSize: 0x44C }
- { offsetInCU: 0x3A6C, offset: 0x89DF9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV20findDirectNeighbours33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x22B8, symBinAddr: 0x80C0, symSize: 0x300 }
- { offsetInCU: 0x3FE8, offset: 0x8A375, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV26findTigerAndLionNeighbours33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x25B8, symBinAddr: 0x83C0, symSize: 0x56C }
- { offsetInCU: 0x491C, offset: 0x8ACA9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtF', symObjAddr: 0x2B24, symBinAddr: 0x892C, symSize: 0x12C }
- { offsetInCU: 0x4AEC, offset: 0x8AE79, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itF', symObjAddr: 0x2C50, symBinAddr: 0x8A58, symSize: 0x140 }
- { offsetInCU: 0x4D56, offset: 0x8B0E3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11isMoveValid7onBoard7fromRow13andFromColumn02toM00n2ToP0SbAA0K0V_S4itF', symObjAddr: 0x2D90, symBinAddr: 0x8B98, symSize: 0xA0 }
- { offsetInCU: 0x4E40, offset: 0x8B1CD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11isMoveValid7onBoard04withH0SbAA0K0V_AA0H0VtF', symObjAddr: 0x2E30, symBinAddr: 0x8C38, symSize: 0x104 }
- { offsetInCU: 0x50CF, offset: 0x8B45C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV13getNextPlayerAA5OwnerOyF', symObjAddr: 0x2F34, symBinAddr: 0x8D3C, symSize: 0x3C }
- { offsetInCU: 0x51E0, offset: 0x8B56D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10isGameOver9withBoard16andLastRowPlayed0lM12ColumnPlayerSb_AA6ResultOtAA0K0V_S2itF', symObjAddr: 0x2F70, symBinAddr: 0x8D78, symSize: 0x188 }
- { offsetInCU: 0x537E, offset: 0x8B70B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10playedMove_15onStartingBoard012andResultingK0yAA0H0V_AA0K0VAJtKF', symObjAddr: 0x30F8, symBinAddr: 0x8F00, symSize: 0x424 }
- { offsetInCU: 0x5879, offset: 0x8BC06, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10occurencesSDyAA5BoardVSiGvg', symObjAddr: 0x351C, symBinAddr: 0x9324, symSize: 0x8 }
- { offsetInCU: 0x588D, offset: 0x8BC1A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8historicSayAA4MoveVGvg', symObjAddr: 0x3524, symBinAddr: 0x932C, symSize: 0x8 }
- { offsetInCU: 0x58BF, offset: 0x8BC4C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11createBoardAA0H0VyFZTW', symObjAddr: 0x352C, symBinAddr: 0x9334, symSize: 0x78 }
- { offsetInCU: 0x590C, offset: 0x8BC99, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10checkBoardyyAA0H0VKFZTW', symObjAddr: 0x35A4, symBinAddr: 0x93AC, symSize: 0x14 }
- { offsetInCU: 0x5944, offset: 0x8BCD1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP13getNextPlayerAA5OwnerOyFTW', symObjAddr: 0x35B8, symBinAddr: 0x93C0, symSize: 0x4 }
- { offsetInCU: 0x5960, offset: 0x8BCED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtFTW', symObjAddr: 0x35BC, symBinAddr: 0x93C4, symSize: 0x14 }
- { offsetInCU: 0x597C, offset: 0x8BD09, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itFTW', symObjAddr: 0x35D0, symBinAddr: 0x93D8, symSize: 0x14 }
- { offsetInCU: 0x5998, offset: 0x8BD25, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11isMoveValid7onBoard7fromRow13andFromColumn02toM00n2ToP0SbAA0K0V_S4itFTW', symObjAddr: 0x35E4, symBinAddr: 0x93EC, symSize: 0x4 }
- { offsetInCU: 0x59B4, offset: 0x8BD41, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11isMoveValid7onBoard04withH0SbAA0K0V_AA0H0VtFTW', symObjAddr: 0x35E8, symBinAddr: 0x93F0, symSize: 0x4 }
- { offsetInCU: 0x59D0, offset: 0x8BD5D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10isGameOver9withBoard16andLastRowPlayed0lM12ColumnPlayerSb_AA6ResultOtAA0K0V_S2itFTW', symObjAddr: 0x35EC, symBinAddr: 0x93F4, symSize: 0x4 }
- { offsetInCU: 0x59EC, offset: 0x8BD79, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10playedMove_15onStartingBoard012andResultingK0yAA0H0V_AA0K0VALtKFTW', symObjAddr: 0x35F0, symBinAddr: 0x93F8, symSize: 0x14 }
- { offsetInCU: 0x5A21, offset: 0x8BDAE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0x3604, symBinAddr: 0x940C, symSize: 0x8 }
- { offsetInCU: 0x5A41, offset: 0x8BDCE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0x3604, symBinAddr: 0x940C, symSize: 0x8 }
- { offsetInCU: 0x5A66, offset: 0x8BDF3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0x360C, symBinAddr: 0x9414, symSize: 0x8 }
- { offsetInCU: 0x5A86, offset: 0x8BE13, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0x360C, symBinAddr: 0x9414, symSize: 0x8 }
- { offsetInCU: 0x5A99, offset: 0x8BE26, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10checkBoardyyAA0H0VKFZTf4nd_n', symObjAddr: 0x5710, symBinAddr: 0xB518, symSize: 0x28C }
- { offsetInCU: 0x5E0F, offset: 0x8C19C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV20initPlacesByCellType33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardVFZTf4nd_n', symObjAddr: 0x599C, symBinAddr: 0xB7A4, symSize: 0x3A8 }
- { offsetInCU: 0x629F, offset: 0x8C62C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV23checkCellsByTypeIterate33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x5D44, symBinAddr: 0xBB4C, symSize: 0x15C }
- { offsetInCU: 0x6492, offset: 0x8C81F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV18checkPiecesIterate33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x5EA0, symBinAddr: 0xBCA8, symSize: 0x178 }
- { offsetInCU: 0x6572, offset: 0x8C8FF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15checkWaterCells33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x6018, symBinAddr: 0xBE20, symSize: 0xDC }
- { offsetInCU: 0x6689, offset: 0x8CA16, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV6pieces33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x368, symBinAddr: 0x6170, symSize: 0x14 }
- { offsetInCU: 0x66A3, offset: 0x8CA30, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x37C, symBinAddr: 0x6184, symSize: 0x30 }
- { offsetInCU: 0x66D9, offset: 0x8CA66, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15iteratingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x454, symBinAddr: 0x625C, symSize: 0x30 }
- { offsetInCU: 0x66F3, offset: 0x8CA80, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12endingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x510, symBinAddr: 0x6318, symSize: 0x14 }
- { offsetInCU: 0x670D, offset: 0x8CA9A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16placesByCellType_WZ', symObjAddr: 0x524, symBinAddr: 0x632C, symSize: 0x24 }
- { offsetInCU: 0x6C29, offset: 0x8CFB6, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8setValue_6forKeyyq_n_xtF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x3614, symBinAddr: 0x941C, symSize: 0xB0 }
- { offsetInCU: 0x6C9E, offset: 0x8D02B, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x36C4, symBinAddr: 0x94CC, symSize: 0x70 }
- { offsetInCU: 0x6CCB, offset: 0x8D058, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x3734, symBinAddr: 0x953C, symSize: 0x3C }
- { offsetInCU: 0x6D0E, offset: 0x8D09B, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x3770, symBinAddr: 0x9578, symSize: 0x64 }
- { offsetInCU: 0x6D86, offset: 0x8D113, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x37D4, symBinAddr: 0x95DC, symSize: 0xE0 }
- { offsetInCU: 0x6EBE, offset: 0x8D24B, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x38B4, symBinAddr: 0x96BC, symSize: 0x20 }
- { offsetInCU: 0x6EE1, offset: 0x8D26E, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5.resume.0', symObjAddr: 0x38D4, symBinAddr: 0x96DC, symSize: 0x10 }
- { offsetInCU: 0x6F24, offset: 0x8D2B1, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV12mutatingFind_8isUniques10_HashTableV6BucketV6bucket_Sb5foundtx_SbtF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x38E4, symBinAddr: 0x96EC, symSize: 0xC8 }
- { offsetInCU: 0x6F8C, offset: 0x8D319, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV12mutatingFind_8isUniques10_HashTableV6BucketV6bucket_Sb5foundtx_SbtF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x39AC, symBinAddr: 0x97B4, symSize: 0xE0 }
- { offsetInCU: 0x6FE2, offset: 0x8D36F, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF14DouShouQiModel5BoardV_TB5', symObjAddr: 0x3A8C, symBinAddr: 0x9894, symSize: 0x78 }
- { offsetInCU: 0x704F, offset: 0x8D3DC, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x3B6C, symBinAddr: 0x9974, symSize: 0x1C0 }
- { offsetInCU: 0x7179, offset: 0x8D506, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x3D2C, symBinAddr: 0x9B34, symSize: 0x54 }
- { offsetInCU: 0x724A, offset: 0x8D5D7, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF14DouShouQiModel5BoardV_TB5', symObjAddr: 0x3D80, symBinAddr: 0x9B88, symSize: 0x260 }
- { offsetInCU: 0x740A, offset: 0x8D797, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x4080, symBinAddr: 0x9E88, symSize: 0x1B0 }
- { offsetInCU: 0x748B, offset: 0x8D818, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF14DouShouQiModel5BoardV_SiTg5', symObjAddr: 0x4230, symBinAddr: 0xA038, symSize: 0x1C8 }
- { offsetInCU: 0x7525, offset: 0x8D8B2, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x43F8, symBinAddr: 0xA200, symSize: 0x358 }
- { offsetInCU: 0x76A4, offset: 0x8DA31, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF14DouShouQiModel5BoardV_SiTg5', symObjAddr: 0x4750, symBinAddr: 0xA558, symSize: 0x344 }
- { offsetInCU: 0x77B7, offset: 0x8DB44, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x4A94, symBinAddr: 0xA89C, symSize: 0x154 }
- { offsetInCU: 0x79C2, offset: 0x8DD4F, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x4BE8, symBinAddr: 0xA9F0, symSize: 0x180 }
- { offsetInCU: 0x7BD8, offset: 0x8DF65, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x4D68, symBinAddr: 0xAB70, symSize: 0x190 }
- { offsetInCU: 0x7C3C, offset: 0x8DFC9, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x4EF8, symBinAddr: 0xAD00, symSize: 0x298 }
- { offsetInCU: 0x7E42, offset: 0x8E1CF, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x5190, symBinAddr: 0xAF98, symSize: 0x33C }
- { offsetInCU: 0x8072, offset: 0x8E3FF, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x54CC, symBinAddr: 0xB2D4, symSize: 0x1C }
- { offsetInCU: 0x808A, offset: 0x8E417, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x54E8, symBinAddr: 0xB2F0, symSize: 0x1C }
- { offsetInCU: 0x80D9, offset: 0x8E466, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x5504, symBinAddr: 0xB30C, symSize: 0x110 }
- { offsetInCU: 0x8231, offset: 0x8E5BE, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x5614, symBinAddr: 0xB41C, symSize: 0xFC }
- { offsetInCU: 0x84A2, offset: 0x8E82F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOACs0F0AAWl', symObjAddr: 0x62EC, symBinAddr: 0xC0F4, symSize: 0x44 }
- { offsetInCU: 0x84B6, offset: 0x8E843, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOACs0G0AAWl', symObjAddr: 0x6330, symBinAddr: 0xC138, symSize: 0x44 }
- { offsetInCU: 0x84CA, offset: 0x8E857, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwCP', symObjAddr: 0x6374, symBinAddr: 0xC17C, symSize: 0x34 }
- { offsetInCU: 0x84DE, offset: 0x8E86B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwxx', symObjAddr: 0x63A8, symBinAddr: 0xC1B0, symSize: 0x28 }
- { offsetInCU: 0x84F2, offset: 0x8E87F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwcp', symObjAddr: 0x63D0, symBinAddr: 0xC1D8, symSize: 0x34 }
- { offsetInCU: 0x8506, offset: 0x8E893, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwca', symObjAddr: 0x6404, symBinAddr: 0xC20C, symSize: 0x5C }
- { offsetInCU: 0x851A, offset: 0x8E8A7, size: 0x8, addend: 0x0, symName: ___swift_memcpy16_8, symObjAddr: 0x6460, symBinAddr: 0xC268, symSize: 0xC }
- { offsetInCU: 0x852E, offset: 0x8E8BB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwta', symObjAddr: 0x646C, symBinAddr: 0xC274, symSize: 0x44 }
- { offsetInCU: 0x8542, offset: 0x8E8CF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwet', symObjAddr: 0x64B0, symBinAddr: 0xC2B8, symSize: 0x48 }
- { offsetInCU: 0x8556, offset: 0x8E8E3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwst', symObjAddr: 0x64F8, symBinAddr: 0xC300, symSize: 0x3C }
- { offsetInCU: 0x856A, offset: 0x8E8F7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVMa', symObjAddr: 0x6534, symBinAddr: 0xC33C, symSize: 0x10 }
- { offsetInCU: 0x857E, offset: 0x8E90B, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledName, symObjAddr: 0x6544, symBinAddr: 0xC34C, symSize: 0x40 }
- { offsetInCU: 0x8642, offset: 0x8E9CF, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy14DouShouQiModel4MoveVG_s15EmptyCollectionVyANGTg5Tf4nndn_n', symObjAddr: 0x6684, symBinAddr: 0xC48C, symSize: 0x178 }
- { offsetInCU: 0x8713, offset: 0x8EAA0, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lF14DouShouQiModel4MoveV_s15EmptyCollectionVyAHGTg5Tf4ndn_n', symObjAddr: 0x67FC, symBinAddr: 0xC604, symSize: 0xC0 }
- { offsetInCU: 0x8927, offset: 0x8ECB4, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x548, symBinAddr: 0x6350, symSize: 0x4C }
- { offsetInCU: 0x8943, offset: 0x8ECD0, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x594, symBinAddr: 0x639C, symSize: 0x30 }
- { offsetInCU: 0x89EF, offset: 0x8ED7C, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x5C4, symBinAddr: 0x63CC, symSize: 0xE4 }
- { offsetInCU: 0x8F81, offset: 0x8F30E, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5Tf4gd_n', symObjAddr: 0x60F4, symBinAddr: 0xBEFC, symSize: 0x100 }
- { offsetInCU: 0x90B3, offset: 0x8F440, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel5BoardV_SiTg5Tf4gd_n', symObjAddr: 0x61F4, symBinAddr: 0xBFFC, symSize: 0xF8 }
- { offsetInCU: 0x9203, offset: 0x8F590, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel5OwnerO_AC6PlayerCTg5Tf4gd_n', symObjAddr: 0x6584, symBinAddr: 0xC38C, symSize: 0x100 }
- { offsetInCU: 0x27, offset: 0x8F8E5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV6ofType7ownedBy9withPieceAcA0eG0O_AA5OwnerOAA0K0VSgtcfC', symObjAddr: 0x0, symBinAddr: 0xCAE0, symSize: 0x1C }
- { offsetInCU: 0x4B, offset: 0x8F909, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV6ofType7ownedBy9withPieceAcA0eG0O_AA5OwnerOAA0K0VSgtcfC', symObjAddr: 0x0, symBinAddr: 0xCAE0, symSize: 0x1C }
- { offsetInCU: 0x9A, offset: 0x8F958, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV11descriptionSSvg', symObjAddr: 0x1C, symBinAddr: 0xCAFC, symSize: 0xF0 }
- { offsetInCU: 0x1DF, offset: 0x8FA9D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV8cellTypeAA0eG0Ovg', symObjAddr: 0x10C, symBinAddr: 0xCBEC, symSize: 0xC }
- { offsetInCU: 0x1FD, offset: 0x8FABB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV12initialOwnerAA0G0Ovg', symObjAddr: 0x118, symBinAddr: 0xCBF8, symSize: 0xC }
- { offsetInCU: 0x21B, offset: 0x8FAD9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvg', symObjAddr: 0x124, symBinAddr: 0xCC04, symSize: 0xC }
- { offsetInCU: 0x239, offset: 0x8FAF7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvs', symObjAddr: 0x130, symBinAddr: 0xCC10, symSize: 0xC }
- { offsetInCU: 0x277, offset: 0x8FB35, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvM', symObjAddr: 0x13C, symBinAddr: 0xCC1C, symSize: 0x10 }
- { offsetInCU: 0x2A5, offset: 0x8FB63, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvM.resume.0', symObjAddr: 0x14C, symBinAddr: 0xCC2C, symSize: 0x4 }
- { offsetInCU: 0x2D0, offset: 0x8FB8E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV2eeoiySbAC_ACtFZ', symObjAddr: 0x150, symBinAddr: 0xCC30, symSize: 0x4 }
- { offsetInCU: 0x2E4, offset: 0x8FBA2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x154, symBinAddr: 0xCC34, symSize: 0x4 }
- { offsetInCU: 0x30F, offset: 0x8FBCD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x158, symBinAddr: 0xCC38, symSize: 0x4 }
- { offsetInCU: 0x32F, offset: 0x8FBED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x158, symBinAddr: 0xCC38, symSize: 0x4 }
- { offsetInCU: 0x340, offset: 0x8FBFE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x15C, symBinAddr: 0xCC3C, symSize: 0x58 }
- { offsetInCU: 0x3B4, offset: 0x8FC72, size: 0x8, addend: 0x0, symName: ___swift_memcpy4_1, symObjAddr: 0x1B4, symBinAddr: 0xCC94, symSize: 0xC }
- { offsetInCU: 0x3C8, offset: 0x8FC86, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVwet', symObjAddr: 0x1C4, symBinAddr: 0xCCA0, symSize: 0x44 }
- { offsetInCU: 0x3DC, offset: 0x8FC9A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVwst', symObjAddr: 0x208, symBinAddr: 0xCCE4, symSize: 0x40 }
- { offsetInCU: 0x3F0, offset: 0x8FCAE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVMa', symObjAddr: 0x248, symBinAddr: 0xCD24, symSize: 0x10 }
- { offsetInCU: 0x2B, offset: 0x8FDBC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0xCD34, symSize: 0x1A4 }
- { offsetInCU: 0x4F, offset: 0x8FDE0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGridSaySayAA4CellVGGvpZ', symObjAddr: 0xB330, symBinAddr: 0x1DB50, symSize: 0x0 }
- { offsetInCU: 0x1A2, offset: 0x8FF33, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0xCD34, symSize: 0x1A4 }
- { offsetInCU: 0x582, offset: 0x90313, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11createBoardAA0I0VyFZ', symObjAddr: 0x1A4, symBinAddr: 0xCED8, symSize: 0x78 }
- { offsetInCU: 0x5C0, offset: 0x90351, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10checkBoardyyAA0I0VKFZ', symObjAddr: 0x21C, symBinAddr: 0xCF50, symSize: 0x14 }
- { offsetInCU: 0x5DB, offset: 0x9036C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVACycfC', symObjAddr: 0x230, symBinAddr: 0xCF64, symSize: 0x30 }
- { offsetInCU: 0x61F, offset: 0x903B0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10occurences8historicACSDyAA5BoardVSiG_SayAA4MoveVGtcfC', symObjAddr: 0x260, symBinAddr: 0xCF94, symSize: 0x54 }
- { offsetInCU: 0x683, offset: 0x90414, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtF', symObjAddr: 0x2B4, symBinAddr: 0xCFE8, symSize: 0x17C }
- { offsetInCU: 0x99E, offset: 0x9072F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itF', symObjAddr: 0x430, symBinAddr: 0xD164, symSize: 0x29C }
- { offsetInCU: 0xCE8, offset: 0x90A79, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11isMoveValid7onBoard7fromRow13andFromColumn02toN00o2ToQ0SbAA0L0V_S4itF', symObjAddr: 0x6CC, symBinAddr: 0xD400, symSize: 0xA0 }
- { offsetInCU: 0xDF9, offset: 0x90B8A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11isMoveValid7onBoard04withI0SbAA0L0V_AA0I0VtF', symObjAddr: 0x76C, symBinAddr: 0xD4A0, symSize: 0x10C }
- { offsetInCU: 0x1033, offset: 0x90DC4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV13getNextPlayerAA5OwnerOyF', symObjAddr: 0x878, symBinAddr: 0xD5AC, symSize: 0x3C }
- { offsetInCU: 0x1143, offset: 0x90ED4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10isGameOver9withBoard16andLastRowPlayed0mN12ColumnPlayerSb_AA6ResultOtAA0L0V_S2itF', symObjAddr: 0x8B4, symBinAddr: 0xD5E8, symSize: 0x11C }
- { offsetInCU: 0x12BB, offset: 0x9104C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10playedMove_15onStartingBoard012andResultingL0yAA0I0V_AA0L0VAJtKF', symObjAddr: 0x9D0, symBinAddr: 0xD704, symSize: 0x1E4 }
- { offsetInCU: 0x1477, offset: 0x91208, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10occurencesSDyAA5BoardVSiGvg', symObjAddr: 0xBB4, symBinAddr: 0xD8E8, symSize: 0x8 }
- { offsetInCU: 0x148B, offset: 0x9121C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8historicSayAA4MoveVGvg', symObjAddr: 0xBBC, symBinAddr: 0xD8F0, symSize: 0x8 }
- { offsetInCU: 0x14BD, offset: 0x9124E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11createBoardAA0I0VyFZTW', symObjAddr: 0xBC4, symBinAddr: 0xD8F8, symSize: 0x78 }
- { offsetInCU: 0x150A, offset: 0x9129B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10checkBoardyyAA0I0VKFZTW', symObjAddr: 0xC3C, symBinAddr: 0xD970, symSize: 0x14 }
- { offsetInCU: 0x1542, offset: 0x912D3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP13getNextPlayerAA5OwnerOyFTW', symObjAddr: 0xC50, symBinAddr: 0xD984, symSize: 0x4 }
- { offsetInCU: 0x155E, offset: 0x912EF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtFTW', symObjAddr: 0xC54, symBinAddr: 0xD988, symSize: 0x14 }
- { offsetInCU: 0x157A, offset: 0x9130B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itFTW', symObjAddr: 0xC68, symBinAddr: 0xD99C, symSize: 0x14 }
- { offsetInCU: 0x1596, offset: 0x91327, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11isMoveValid7onBoard7fromRow13andFromColumn02toN00o2ToQ0SbAA0L0V_S4itFTW', symObjAddr: 0xC7C, symBinAddr: 0xD9B0, symSize: 0x4 }
- { offsetInCU: 0x15B2, offset: 0x91343, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11isMoveValid7onBoard04withI0SbAA0L0V_AA0I0VtFTW', symObjAddr: 0xC80, symBinAddr: 0xD9B4, symSize: 0x4 }
- { offsetInCU: 0x15CE, offset: 0x9135F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10isGameOver9withBoard16andLastRowPlayed0mN12ColumnPlayerSb_AA6ResultOtAA0L0V_S2itFTW', symObjAddr: 0xC84, symBinAddr: 0xD9B8, symSize: 0x18 }
- { offsetInCU: 0x15EA, offset: 0x9137B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10playedMove_15onStartingBoard012andResultingL0yAA0I0V_AA0L0VALtKFTW', symObjAddr: 0xC9C, symBinAddr: 0xD9D0, symSize: 0x14 }
- { offsetInCU: 0x161E, offset: 0x913AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0xCB0, symBinAddr: 0xD9E4, symSize: 0x8 }
- { offsetInCU: 0x163E, offset: 0x913CF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0xCB0, symBinAddr: 0xD9E4, symSize: 0x8 }
- { offsetInCU: 0x1661, offset: 0x913F2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0xCB8, symBinAddr: 0xD9EC, symSize: 0x8 }
- { offsetInCU: 0x1681, offset: 0x91412, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0xCB8, symBinAddr: 0xD9EC, symSize: 0x8 }
- { offsetInCU: 0x1693, offset: 0x91424, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV16checkCellsByType33_2B29F97F1EE5509065CD9853A78D42F5LLyyAA5BoardVKFZTf4nd_n', symObjAddr: 0xCC0, symBinAddr: 0xD9F4, symSize: 0x144 }
- { offsetInCU: 0x1895, offset: 0x91626, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11checkPieces33_2B29F97F1EE5509065CD9853A78D42F5LLyyAA5BoardVKFZTf4nd_n', symObjAddr: 0xE04, symBinAddr: 0xDB38, symSize: 0x220 }
- { offsetInCU: 0x1BFD, offset: 0x9198E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10checkBoardyyAA0I0VKFZTf4nd_n', symObjAddr: 0x1024, symBinAddr: 0xDD58, symSize: 0xB8 }
- { offsetInCU: 0x1E82, offset: 0x91C13, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwCP', symObjAddr: 0x11A4, symBinAddr: 0xDE10, symSize: 0x34 }
- { offsetInCU: 0x1E96, offset: 0x91C27, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwxx', symObjAddr: 0x11D8, symBinAddr: 0xDE44, symSize: 0x28 }
- { offsetInCU: 0x1EAA, offset: 0x91C3B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwcp', symObjAddr: 0x1200, symBinAddr: 0xDE6C, symSize: 0x34 }
- { offsetInCU: 0x1EBE, offset: 0x91C4F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwca', symObjAddr: 0x1234, symBinAddr: 0xDEA0, symSize: 0x5C }
- { offsetInCU: 0x1ED2, offset: 0x91C63, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwta', symObjAddr: 0x129C, symBinAddr: 0xDEFC, symSize: 0x44 }
- { offsetInCU: 0x1EE6, offset: 0x91C77, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwet', symObjAddr: 0x12E0, symBinAddr: 0xDF40, symSize: 0x48 }
- { offsetInCU: 0x1EFA, offset: 0x91C8B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwst', symObjAddr: 0x1328, symBinAddr: 0xDF88, symSize: 0x3C }
- { offsetInCU: 0x1F0E, offset: 0x91C9F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVMa', symObjAddr: 0x1364, symBinAddr: 0xDFC4, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x92041, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0xE04C, symSize: 0x68 }
- { offsetInCU: 0x7A, offset: 0x92070, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCfd', symObjAddr: 0x88, symBinAddr: 0xE0D4, symSize: 0x24 }
- { offsetInCU: 0x97, offset: 0x9208D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC26addPlayedCallbacksListeneryyyAA4MoveVSg_ACtYaKcF', symObjAddr: 0xAC, symBinAddr: 0xE0F8, symSize: 0xE4 }
- { offsetInCU: 0x1C2, offset: 0x921B8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKF', symObjAddr: 0x190, symBinAddr: 0xE1DC, symSize: 0x28 }
- { offsetInCU: 0x252, offset: 0x92248, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY0_', symObjAddr: 0x1B8, symBinAddr: 0xE204, symSize: 0x10C }
- { offsetInCU: 0x3DB, offset: 0x923D1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTQ1_', symObjAddr: 0x2C4, symBinAddr: 0xE310, symSize: 0x70 }
- { offsetInCU: 0x49A, offset: 0x92490, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY2_', symObjAddr: 0x334, symBinAddr: 0xE380, symSize: 0xFC }
- { offsetInCU: 0x58F, offset: 0x92585, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY3_', symObjAddr: 0x430, symBinAddr: 0xE47C, symSize: 0x40 }
- { offsetInCU: 0x601, offset: 0x925F7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC4nameSSvg', symObjAddr: 0x470, symBinAddr: 0xE4BC, symSize: 0x2C }
- { offsetInCU: 0x630, offset: 0x92626, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC2idAA5OwnerOvg', symObjAddr: 0x49C, symBinAddr: 0xE4E8, symSize: 0xC }
- { offsetInCU: 0x693, offset: 0x92689, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x4A8, symBinAddr: 0xE4F4, symSize: 0x98 }
- { offsetInCU: 0x6C8, offset: 0x926BE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x540, symBinAddr: 0xE58C, symSize: 0xC }
- { offsetInCU: 0x738, offset: 0x9272E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCfD', symObjAddr: 0x6F4, symBinAddr: 0xE740, symSize: 0x2C }
- { offsetInCU: 0x77C, offset: 0x92772, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCMa', symObjAddr: 0x68, symBinAddr: 0xE0B4, symSize: 0x20 }
- { offsetInCU: 0x883, offset: 0x92879, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TR', symObjAddr: 0x54C, symBinAddr: 0xE598, symSize: 0x6C }
- { offsetInCU: 0x8B6, offset: 0x928AC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTQ0_', symObjAddr: 0x5B8, symBinAddr: 0xE604, symSize: 0x48 }
- { offsetInCU: 0x904, offset: 0x928FA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA', symObjAddr: 0x624, symBinAddr: 0xE670, symSize: 0x88 }
- { offsetInCU: 0x934, offset: 0x9292A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTATQ0_', symObjAddr: 0x6AC, symBinAddr: 0xE6F8, symSize: 0x48 }
- { offsetInCU: 0x9FE, offset: 0x929F4, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSi3row_Si3colt_Tg5', symObjAddr: 0x82C, symBinAddr: 0xE878, symSize: 0xFC }
- { offsetInCU: 0xBA1, offset: 0x92B97, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x968, symBinAddr: 0xE974, symSize: 0x110 }
- { offsetInCU: 0xD44, offset: 0x92D3A, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0xA78, symBinAddr: 0xEA84, symSize: 0xFC }
- { offsetInCU: 0xEF2, offset: 0x92EE8, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSay14DouShouQiModel4CellVG_Tg5', symObjAddr: 0xB74, symBinAddr: 0xEB80, symSize: 0x128 }
- { offsetInCU: 0x27, offset: 0x93220, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP7_domainSSvgTW', symObjAddr: 0x0, symBinAddr: 0xEE28, symSize: 0x4 }
- { offsetInCU: 0x3F, offset: 0x93238, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwCP', symObjAddr: 0x10, symBinAddr: 0xEE38, symSize: 0x48 }
- { offsetInCU: 0x53, offset: 0x9324C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwxx', symObjAddr: 0x58, symBinAddr: 0xEE80, symSize: 0x18 }
- { offsetInCU: 0x67, offset: 0x93260, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwcp', symObjAddr: 0x70, symBinAddr: 0xEE98, symSize: 0x48 }
- { offsetInCU: 0x7B, offset: 0x93274, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwca', symObjAddr: 0xB8, symBinAddr: 0xEEE0, symSize: 0xA0 }
- { offsetInCU: 0x8F, offset: 0x93288, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwta', symObjAddr: 0x164, symBinAddr: 0xEF80, symSize: 0x60 }
- { offsetInCU: 0xA3, offset: 0x9329C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwet', symObjAddr: 0x1C4, symBinAddr: 0xEFE0, symSize: 0x58 }
- { offsetInCU: 0xB7, offset: 0x932B0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwst', symObjAddr: 0x21C, symBinAddr: 0xF038, symSize: 0x54 }
- { offsetInCU: 0xCB, offset: 0x932C4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwug', symObjAddr: 0x270, symBinAddr: 0xF08C, symSize: 0x18 }
- { offsetInCU: 0xDF, offset: 0x932D8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwup', symObjAddr: 0x288, symBinAddr: 0xF0A4, symSize: 0x4 }
- { offsetInCU: 0xF3, offset: 0x932EC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwui', symObjAddr: 0x28C, symBinAddr: 0xF0A8, symSize: 0x20 }
- { offsetInCU: 0x107, offset: 0x93300, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOMa', symObjAddr: 0x2AC, symBinAddr: 0xF0C8, symSize: 0x10 }
- { offsetInCU: 0x12C, offset: 0x93325, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP7_domainSSvgTW', symObjAddr: 0x0, symBinAddr: 0xEE28, symSize: 0x4 }
- { offsetInCU: 0x148, offset: 0x93341, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP5_codeSivgTW', symObjAddr: 0x4, symBinAddr: 0xEE2C, symSize: 0x4 }
- { offsetInCU: 0x164, offset: 0x9335D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP9_userInfoyXlSgvgTW', symObjAddr: 0x8, symBinAddr: 0xEE30, symSize: 0x4 }
- { offsetInCU: 0x180, offset: 0x93379, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0xC, symBinAddr: 0xEE34, symSize: 0x4 }
- { offsetInCU: 0x27, offset: 0x9340E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x0, symBinAddr: 0xF0D8, symSize: 0x28 }
- { offsetInCU: 0x52, offset: 0x93439, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x0, symBinAddr: 0xF0D8, symSize: 0x28 }
- { offsetInCU: 0xC5, offset: 0x934AC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY0_', symObjAddr: 0x28, symBinAddr: 0xF100, symSize: 0x1B4 }
- { offsetInCU: 0x3A6, offset: 0x9378D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTQ1_', symObjAddr: 0x1DC, symBinAddr: 0xF2B4, symSize: 0x70 }
- { offsetInCU: 0x4A7, offset: 0x9388E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY2_', symObjAddr: 0x24C, symBinAddr: 0xF324, symSize: 0x104 }
- { offsetInCU: 0x5DD, offset: 0x939C4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY3_', symObjAddr: 0x350, symBinAddr: 0xF428, symSize: 0x4C }
- { offsetInCU: 0x6C4, offset: 0x93AAB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x3C0, symBinAddr: 0xF498, symSize: 0x9C }
- { offsetInCU: 0x71B, offset: 0x93B02, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x45C, symBinAddr: 0xF534, symSize: 0x6C }
- { offsetInCU: 0x76C, offset: 0x93B53, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCfd', symObjAddr: 0x4C8, symBinAddr: 0xF5A0, symSize: 0x24 }
- { offsetInCU: 0x7CB, offset: 0x93BB2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCfD', symObjAddr: 0x4EC, symBinAddr: 0xF5C4, symSize: 0x2C }
- { offsetInCU: 0x9ED, offset: 0x93DD4, size: 0x8, addend: 0x0, symName: ___swift_project_boxed_opaque_existential_1, symObjAddr: 0x39C, symBinAddr: 0xF474, symSize: 0x24 }
- { offsetInCU: 0xA98, offset: 0x93E7F, size: 0x8, addend: 0x0, symName: '_$sSGsE4next10upperBoundqd__qd___ts17FixedWidthIntegerRd__SURd__lFs27SystemRandomNumberGeneratorV_SuTg5', symObjAddr: 0x518, symBinAddr: 0xF5F0, symSize: 0x88 }
- { offsetInCU: 0xB39, offset: 0x93F20, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCMa', symObjAddr: 0x5A0, symBinAddr: 0xF678, symSize: 0x20 }
- { offsetInCU: 0x27, offset: 0x940DC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO8allCasesSayACGvgZ', symObjAddr: 0x0, symBinAddr: 0xF698, symSize: 0x48 }
- { offsetInCU: 0x6C, offset: 0x94121, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO8allCasesSayACGvgZ', symObjAddr: 0x0, symBinAddr: 0xF698, symSize: 0x48 }
- { offsetInCU: 0xDB, offset: 0x94190, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO2eeoiySbAC_ACtFZ', symObjAddr: 0x88, symBinAddr: 0xF6E0, symSize: 0x14 }
- { offsetInCU: 0x10E, offset: 0x941C3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO4hash4intoys6HasherVz_tF', symObjAddr: 0x9C, symBinAddr: 0xF6F4, symSize: 0x28 }
- { offsetInCU: 0x1A4, offset: 0x94259, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO9hashValueSivg', symObjAddr: 0xC4, symBinAddr: 0xF71C, symSize: 0x44 }
- { offsetInCU: 0x29E, offset: 0x94353, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x108, symBinAddr: 0xF760, symSize: 0x14 }
- { offsetInCU: 0x2BE, offset: 0x94373, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x108, symBinAddr: 0xF760, symSize: 0x14 }
- { offsetInCU: 0x2FE, offset: 0x943B3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x11C, symBinAddr: 0xF774, symSize: 0x44 }
- { offsetInCU: 0x3E1, offset: 0x94496, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x160, symBinAddr: 0xF7B8, symSize: 0x28 }
- { offsetInCU: 0x46D, offset: 0x94522, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOs12CaseIterableAAsADP8allCases03AllJ0QzvgZTW', symObjAddr: 0x2A4, symBinAddr: 0xF8FC, symSize: 0x58 }
- { offsetInCU: 0x509, offset: 0x945BE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASQWb', symObjAddr: 0x1C8, symBinAddr: 0xF820, symSize: 0x4 }
- { offsetInCU: 0x51D, offset: 0x945D2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOACSQAAWl', symObjAddr: 0x1CC, symBinAddr: 0xF824, symSize: 0x44 }
- { offsetInCU: 0x531, offset: 0x945E6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOs12CaseIterableAA8AllCasessADP_SlWT', symObjAddr: 0x210, symBinAddr: 0xF868, symSize: 0x4 }
- { offsetInCU: 0x545, offset: 0x945FA, size: 0x8, addend: 0x0, symName: '_$sSay14DouShouQiModel8CellTypeOGSayxGSlsWl', symObjAddr: 0x214, symBinAddr: 0xF86C, symSize: 0x4C }
- { offsetInCU: 0x559, offset: 0x9460E, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledNameAbstract, symObjAddr: 0x260, symBinAddr: 0xF8B8, symSize: 0x44 }
- { offsetInCU: 0x56D, offset: 0x94622, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwet', symObjAddr: 0x30C, symBinAddr: 0xF954, symSize: 0x90 }
- { offsetInCU: 0x581, offset: 0x94636, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwst', symObjAddr: 0x39C, symBinAddr: 0xF9E4, symSize: 0xBC }
- { offsetInCU: 0x595, offset: 0x9464A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwug', symObjAddr: 0x458, symBinAddr: 0xFAA0, symSize: 0x8 }
- { offsetInCU: 0x5A9, offset: 0x9465E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwup', symObjAddr: 0x460, symBinAddr: 0xFAA8, symSize: 0x4 }
- { offsetInCU: 0x5BD, offset: 0x94672, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwui', symObjAddr: 0x464, symBinAddr: 0xFAAC, symSize: 0x8 }
- { offsetInCU: 0x5D1, offset: 0x94686, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOMa', symObjAddr: 0x46C, symBinAddr: 0xFAB4, symSize: 0x10 }
- { offsetInCU: 0x640, offset: 0x946F5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x188, symBinAddr: 0xF7E0, symSize: 0x40 }
- { offsetInCU: 0x2B, offset: 0x94839, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV8withGridACSgSaySayAA4CellVGG_tcfC', symObjAddr: 0x0, symBinAddr: 0xFAC4, symSize: 0x68 }
- { offsetInCU: 0xA6, offset: 0x948B4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV8withGridACSgSaySayAA4CellVGG_tcfC', symObjAddr: 0x0, symBinAddr: 0xFAC4, symSize: 0x68 }
- { offsetInCU: 0x2B0, offset: 0x94ABE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11countPieces2ofSiAA5OwnerO_tF', symObjAddr: 0x68, symBinAddr: 0xFB2C, symSize: 0x1C0 }
- { offsetInCU: 0x583, offset: 0x94D91, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV4hash4intoys6HasherVz_tF', symObjAddr: 0x228, symBinAddr: 0xFCEC, symSize: 0xD0 }
- { offsetInCU: 0x7F1, offset: 0x94FFF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV6nbRowsSivg', symObjAddr: 0x2F8, symBinAddr: 0xFDBC, symSize: 0x8 }
- { offsetInCU: 0x80F, offset: 0x9501D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV9nbColumnsSivg', symObjAddr: 0x300, symBinAddr: 0xFDC4, symSize: 0x8 }
- { offsetInCU: 0x82D, offset: 0x9503B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV4gridSaySayAA4CellVGGvg', symObjAddr: 0x308, symBinAddr: 0xFDCC, symSize: 0x8 }
- { offsetInCU: 0x84B, offset: 0x95059, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11countPiecesSi04nbOfgI7Player1_Si0higI7Player2tyF', symObjAddr: 0x310, symBinAddr: 0xFDD4, symSize: 0xD0 }
- { offsetInCU: 0xA02, offset: 0x95210, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV6insert5piece5atRow9andColumnAA0E6ResultOAA5PieceV_S2itF', symObjAddr: 0x3E0, symBinAddr: 0xFEA4, symSize: 0x150 }
- { offsetInCU: 0xC18, offset: 0x95426, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11removePiece5atRow9andColumnAA0E6ResultOSi_SitF', symObjAddr: 0x530, symBinAddr: 0xFFF4, symSize: 0x14C }
- { offsetInCU: 0xE35, offset: 0x95643, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV2eeoiySbAC_ACtFZ', symObjAddr: 0x67C, symBinAddr: 0x10140, symSize: 0x28 }
- { offsetInCU: 0xE77, offset: 0x95685, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV9hashValueSivg', symObjAddr: 0x6A4, symBinAddr: 0x10168, symSize: 0x50 }
- { offsetInCU: 0xF03, offset: 0x95711, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH9hashValueSivgTW', symObjAddr: 0x6F4, symBinAddr: 0x101B8, symSize: 0x50 }
- { offsetInCU: 0xF92, offset: 0x957A0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x744, symBinAddr: 0x10208, symSize: 0x4 }
- { offsetInCU: 0xFC0, offset: 0x957CE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x794, symBinAddr: 0x10258, symSize: 0x28 }
- { offsetInCU: 0x125D, offset: 0x95A6B, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x7BC, symBinAddr: 0x10280, symSize: 0x14 }
- { offsetInCU: 0x1295, offset: 0x95AA3, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x7D0, symBinAddr: 0x10294, symSize: 0x14 }
- { offsetInCU: 0x12CD, offset: 0x95ADB, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSay14DouShouQiModel4CellVG_Tg5', symObjAddr: 0x7E4, symBinAddr: 0x102A8, symSize: 0x14 }
- { offsetInCU: 0x1305, offset: 0x95B13, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASQWb', symObjAddr: 0x9B0, symBinAddr: 0x10474, symSize: 0x4 }
- { offsetInCU: 0x1319, offset: 0x95B27, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVACSQAAWl', symObjAddr: 0x9B4, symBinAddr: 0x10478, symSize: 0x44 }
- { offsetInCU: 0x132D, offset: 0x95B3B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwCP', symObjAddr: 0x9F8, symBinAddr: 0x104BC, symSize: 0x34 }
- { offsetInCU: 0x1341, offset: 0x95B4F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwxx', symObjAddr: 0xA2C, symBinAddr: 0x104F0, symSize: 0x8 }
- { offsetInCU: 0x1355, offset: 0x95B63, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwcp', symObjAddr: 0xA34, symBinAddr: 0x104F8, symSize: 0x34 }
- { offsetInCU: 0x1369, offset: 0x95B77, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwca', symObjAddr: 0xA68, symBinAddr: 0x1052C, symSize: 0x48 }
- { offsetInCU: 0x137D, offset: 0x95B8B, size: 0x8, addend: 0x0, symName: ___swift_memcpy24_8, symObjAddr: 0xAB0, symBinAddr: 0x10574, symSize: 0x14 }
- { offsetInCU: 0x1391, offset: 0x95B9F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwta', symObjAddr: 0xAC4, symBinAddr: 0x10588, symSize: 0x38 }
- { offsetInCU: 0x13A5, offset: 0x95BB3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwet', symObjAddr: 0xAFC, symBinAddr: 0x105C0, symSize: 0x48 }
- { offsetInCU: 0x13B9, offset: 0x95BC7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwst', symObjAddr: 0xB44, symBinAddr: 0x10608, symSize: 0x40 }
- { offsetInCU: 0x13CD, offset: 0x95BDB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVMa', symObjAddr: 0xB84, symBinAddr: 0x10648, symSize: 0x10 }
- { offsetInCU: 0x153A, offset: 0x95D48, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x748, symBinAddr: 0x1020C, symSize: 0x4C }
- { offsetInCU: 0x1578, offset: 0x95D86, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0x102BC, symSize: 0x98 }
- { offsetInCU: 0x1598, offset: 0x95DA6, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0x102BC, symSize: 0x98 }
- { offsetInCU: 0x15AC, offset: 0x95DBA, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0x102BC, symSize: 0x98 }
- { offsetInCU: 0x15C0, offset: 0x95DCE, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0x102BC, symSize: 0x98 }
- { offsetInCU: 0x164C, offset: 0x95E5A, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZSay14DouShouQiModel4CellVG_Tg5Tf4nnd_n', symObjAddr: 0x890, symBinAddr: 0x10354, symSize: 0x120 }
- { offsetInCU: 0x27, offset: 0x960AA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9withOwner9andAnimalAcA0G0O_AA0I0OtcfC', symObjAddr: 0x0, symBinAddr: 0x10658, symSize: 0x14 }
- { offsetInCU: 0x46, offset: 0x960C9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9withOwner9andAnimalAcA0G0O_AA0I0OtcfC', symObjAddr: 0x0, symBinAddr: 0x10658, symSize: 0x14 }
- { offsetInCU: 0x85, offset: 0x96108, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV11descriptionSSvg', symObjAddr: 0x14, symBinAddr: 0x1066C, symSize: 0xB4 }
- { offsetInCU: 0x176, offset: 0x961F9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV5ownerAA5OwnerOvg', symObjAddr: 0xC8, symBinAddr: 0x10720, symSize: 0xC }
- { offsetInCU: 0x194, offset: 0x96217, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV6animalAA6AnimalOvg', symObjAddr: 0xD4, symBinAddr: 0x1072C, symSize: 0xC }
- { offsetInCU: 0x1B2, offset: 0x96235, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV4hash4intoys6HasherVz_tF', symObjAddr: 0xE0, symBinAddr: 0x10738, symSize: 0x3C }
- { offsetInCU: 0x2E8, offset: 0x9636B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV2eeoiySbAC_ACtFZ', symObjAddr: 0x11C, symBinAddr: 0x10774, symSize: 0x20 }
- { offsetInCU: 0x355, offset: 0x963D8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9hashValueSivg', symObjAddr: 0x13C, symBinAddr: 0x10794, symSize: 0x5C }
- { offsetInCU: 0x4EB, offset: 0x9656E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x198, symBinAddr: 0x107F0, symSize: 0x4 }
- { offsetInCU: 0x516, offset: 0x96599, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH9hashValueSivgTW', symObjAddr: 0x19C, symBinAddr: 0x107F4, symSize: 0x5C }
- { offsetInCU: 0x6C9, offset: 0x9674C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1F8, symBinAddr: 0x10850, symSize: 0x3C }
- { offsetInCU: 0x82D, offset: 0x968B0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x28C, symBinAddr: 0x108E4, symSize: 0x20 }
- { offsetInCU: 0x84D, offset: 0x968D0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x28C, symBinAddr: 0x108E4, symSize: 0x20 }
- { offsetInCU: 0x949, offset: 0x969CC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASQWb', symObjAddr: 0x2AC, symBinAddr: 0x10904, symSize: 0x4 }
- { offsetInCU: 0x95D, offset: 0x969E0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVACSQAAWl', symObjAddr: 0x2B0, symBinAddr: 0x10908, symSize: 0x44 }
- { offsetInCU: 0x971, offset: 0x969F4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVwet', symObjAddr: 0x304, symBinAddr: 0x1094C, symSize: 0x94 }
- { offsetInCU: 0x985, offset: 0x96A08, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVwst', symObjAddr: 0x398, symBinAddr: 0x109E0, symSize: 0xBC }
- { offsetInCU: 0x999, offset: 0x96A1C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVMa', symObjAddr: 0x454, symBinAddr: 0x10A9C, symSize: 0x10 }
- { offsetInCU: 0xA45, offset: 0x96AC8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x234, symBinAddr: 0x1088C, symSize: 0x58 }
- { offsetInCU: 0x27, offset: 0x96CC8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10AAC, symSize: 0x4 }
- { offsetInCU: 0x4B, offset: 0x96CEC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10AAC, symSize: 0x4 }
- { offsetInCU: 0x6E, offset: 0x96D0F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x14, symBinAddr: 0x10AC0, symSize: 0x4 }
- { offsetInCU: 0x8E, offset: 0x96D2F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x14, symBinAddr: 0x10AC0, symSize: 0x4 }
- { offsetInCU: 0x9F, offset: 0x96D40, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x18, symBinAddr: 0x10AC4, symSize: 0x118 }
- { offsetInCU: 0x1AE, offset: 0x96E4F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwCP', symObjAddr: 0x130, symBinAddr: 0x10BDC, symSize: 0x30 }
- { offsetInCU: 0x1C2, offset: 0x96E63, size: 0x8, addend: 0x0, symName: ___swift_memcpy25_8, symObjAddr: 0x164, symBinAddr: 0x10C0C, symSize: 0x14 }
- { offsetInCU: 0x1D6, offset: 0x96E77, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwet', symObjAddr: 0x178, symBinAddr: 0x10C20, symSize: 0x48 }
- { offsetInCU: 0x1EA, offset: 0x96E8B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwst', symObjAddr: 0x1C0, symBinAddr: 0x10C68, symSize: 0x48 }
- { offsetInCU: 0x1FE, offset: 0x96E9F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwug', symObjAddr: 0x208, symBinAddr: 0x10CB0, symSize: 0x18 }
- { offsetInCU: 0x212, offset: 0x96EB3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwup', symObjAddr: 0x220, symBinAddr: 0x10CC8, symSize: 0x4 }
- { offsetInCU: 0x226, offset: 0x96EC7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwui', symObjAddr: 0x224, symBinAddr: 0x10CCC, symSize: 0x1C }
- { offsetInCU: 0x23A, offset: 0x96EDB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOMa', symObjAddr: 0x240, symBinAddr: 0x10CE8, symSize: 0x10 }
- { offsetInCU: 0x25F, offset: 0x96F00, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP7_domainSSvgTW', symObjAddr: 0x4, symBinAddr: 0x10AB0, symSize: 0x4 }
- { offsetInCU: 0x27B, offset: 0x96F1C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP5_codeSivgTW', symObjAddr: 0x8, symBinAddr: 0x10AB4, symSize: 0x4 }
- { offsetInCU: 0x297, offset: 0x96F38, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP9_userInfoyXlSgvgTW', symObjAddr: 0xC, symBinAddr: 0x10AB8, symSize: 0x4 }
- { offsetInCU: 0x2B3, offset: 0x96F54, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0x10, symBinAddr: 0x10ABC, symSize: 0x4 }
- { offsetInCU: 0x27, offset: 0x96FFF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10CF8, symSize: 0x14 }
- { offsetInCU: 0x4B, offset: 0x97023, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10CF8, symSize: 0x14 }
- { offsetInCU: 0x7E, offset: 0x97056, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO17simpleDescriptionSSvg', symObjAddr: 0x14, symBinAddr: 0x10D0C, symSize: 0x18 }
- { offsetInCU: 0xA9, offset: 0x97081, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO4hash4intoys6HasherVz_tF', symObjAddr: 0x2C, symBinAddr: 0x10D24, symSize: 0x28 }
- { offsetInCU: 0x13F, offset: 0x97117, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO9hashValueSivg', symObjAddr: 0x54, symBinAddr: 0x10D4C, symSize: 0x44 }
- { offsetInCU: 0x239, offset: 0x97211, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x98, symBinAddr: 0x10D90, symSize: 0x14 }
- { offsetInCU: 0x259, offset: 0x97231, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x98, symBinAddr: 0x10D90, symSize: 0x14 }
- { offsetInCU: 0x299, offset: 0x97271, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH9hashValueSivgTW', symObjAddr: 0xAC, symBinAddr: 0x10DA4, symSize: 0x44 }
- { offsetInCU: 0x37C, offset: 0x97354, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xF0, symBinAddr: 0x10DE8, symSize: 0x28 }
- { offsetInCU: 0x405, offset: 0x973DD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASQWb', symObjAddr: 0x158, symBinAddr: 0x10E50, symSize: 0x4 }
- { offsetInCU: 0x419, offset: 0x973F1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOACSQAAWl', symObjAddr: 0x15C, symBinAddr: 0x10E54, symSize: 0x44 }
- { offsetInCU: 0x42D, offset: 0x97405, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwet', symObjAddr: 0x1B0, symBinAddr: 0x10E98, symSize: 0x90 }
- { offsetInCU: 0x441, offset: 0x97419, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwst', symObjAddr: 0x240, symBinAddr: 0x10F28, symSize: 0xBC }
- { offsetInCU: 0x455, offset: 0x9742D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwug', symObjAddr: 0x2FC, symBinAddr: 0x10FE4, symSize: 0x8 }
- { offsetInCU: 0x469, offset: 0x97441, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwup', symObjAddr: 0x304, symBinAddr: 0x10FEC, symSize: 0x4 }
- { offsetInCU: 0x47D, offset: 0x97455, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwui', symObjAddr: 0x308, symBinAddr: 0x10FF0, symSize: 0x8 }
- { offsetInCU: 0x491, offset: 0x97469, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOMa', symObjAddr: 0x310, symBinAddr: 0x10FF8, symSize: 0x10 }
- { offsetInCU: 0x4EA, offset: 0x974C2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x118, symBinAddr: 0x10E10, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x975ED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0x11008, symSize: 0x6C }
- { offsetInCU: 0xAC, offset: 0x97672, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0x11008, symSize: 0x6C }
- { offsetInCU: 0xF0, offset: 0x976B6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCfd', symObjAddr: 0x6C, symBinAddr: 0x11074, symSize: 0x24 }
- { offsetInCU: 0x155, offset: 0x9771B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x90, symBinAddr: 0x11098, symSize: 0x9C }
- { offsetInCU: 0x1BD, offset: 0x97783, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCfD', symObjAddr: 0x12C, symBinAddr: 0x11134, symSize: 0x2C }
- { offsetInCU: 0x217, offset: 0x977DD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCMa', symObjAddr: 0x158, symBinAddr: 0x11160, symSize: 0x20 }
- { offsetInCU: 0x27, offset: 0x978A4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x11180, symSize: 0x4 }
- { offsetInCU: 0x46, offset: 0x978C3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x11180, symSize: 0x4 }
- { offsetInCU: 0x5A, offset: 0x978D7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2of7fromRow13andFromColumn02toH00i2ToK0AcA5OwnerO_S4itcfC', symObjAddr: 0x4, symBinAddr: 0x11184, symSize: 0x14 }
- { offsetInCU: 0xC1, offset: 0x9793E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV5ownerAA5OwnerOvg', symObjAddr: 0x18, symBinAddr: 0x11198, symSize: 0xC }
- { offsetInCU: 0xDF, offset: 0x9795C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV9rowOriginSivg', symObjAddr: 0x24, symBinAddr: 0x111A4, symSize: 0x8 }
- { offsetInCU: 0xFD, offset: 0x9797A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV12columnOriginSivg', symObjAddr: 0x2C, symBinAddr: 0x111AC, symSize: 0x8 }
- { offsetInCU: 0x11B, offset: 0x97998, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV14rowDestinationSivg', symObjAddr: 0x34, symBinAddr: 0x111B4, symSize: 0x8 }
- { offsetInCU: 0x139, offset: 0x979B6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV17columnDestinationSivg', symObjAddr: 0x3C, symBinAddr: 0x111BC, symSize: 0x8 }
- { offsetInCU: 0x157, offset: 0x979D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV11descriptionSSvg', symObjAddr: 0x44, symBinAddr: 0x111C4, symSize: 0x198 }
- { offsetInCU: 0x287, offset: 0x97B04, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x1DC, symBinAddr: 0x1135C, symSize: 0x4 }
- { offsetInCU: 0x2B2, offset: 0x97B2F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1E0, symBinAddr: 0x11360, symSize: 0x4 }
- { offsetInCU: 0x2D2, offset: 0x97B4F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1E0, symBinAddr: 0x11360, symSize: 0x4 }
- { offsetInCU: 0x2E3, offset: 0x97B60, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x1E4, symBinAddr: 0x11364, symSize: 0x48 }
- { offsetInCU: 0x316, offset: 0x97B93, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwCP', symObjAddr: 0x22C, symBinAddr: 0x113AC, symSize: 0x30 }
- { offsetInCU: 0x32A, offset: 0x97BA7, size: 0x8, addend: 0x0, symName: ___swift_memcpy40_8, symObjAddr: 0x260, symBinAddr: 0x113DC, symSize: 0x14 }
- { offsetInCU: 0x33E, offset: 0x97BBB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwet', symObjAddr: 0x274, symBinAddr: 0x113F0, symSize: 0x44 }
- { offsetInCU: 0x352, offset: 0x97BCF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwst', symObjAddr: 0x2B8, symBinAddr: 0x11434, symSize: 0x4C }
- { offsetInCU: 0x366, offset: 0x97BE3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVMa', symObjAddr: 0x304, symBinAddr: 0x11480, symSize: 0x10 }
- { offsetInCU: 0x27, offset: 0x97CD6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueSivg', symObjAddr: 0x0, symBinAddr: 0x11490, symSize: 0xC }
- { offsetInCU: 0x4B, offset: 0x97CFA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueSivg', symObjAddr: 0x0, symBinAddr: 0x11490, symSize: 0xC }
- { offsetInCU: 0x66, offset: 0x97D15, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueACSgSi_tcfC', symObjAddr: 0xC, symBinAddr: 0x1149C, symSize: 0x18 }
- { offsetInCU: 0xB8, offset: 0x97D67, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x130, symBinAddr: 0x115C0, symSize: 0x8 }
- { offsetInCU: 0xD4, offset: 0x97D83, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x138, symBinAddr: 0x115C8, symSize: 0x10 }
- { offsetInCU: 0xEC, offset: 0x97D9B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x138, symBinAddr: 0x115C8, symSize: 0x10 }
- { offsetInCU: 0x109, offset: 0x97DB8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASQWb', symObjAddr: 0x38, symBinAddr: 0x114C8, symSize: 0x4 }
- { offsetInCU: 0x11D, offset: 0x97DCC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOACSQAAWl', symObjAddr: 0x3C, symBinAddr: 0x114CC, symSize: 0x44 }
- { offsetInCU: 0x147, offset: 0x97DF6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwet', symObjAddr: 0x158, symBinAddr: 0x115D8, symSize: 0x90 }
- { offsetInCU: 0x15B, offset: 0x97E0A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwst', symObjAddr: 0x1E8, symBinAddr: 0x11668, symSize: 0xBC }
- { offsetInCU: 0x16F, offset: 0x97E1E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwug', symObjAddr: 0x2A4, symBinAddr: 0x11724, symSize: 0x8 }
- { offsetInCU: 0x183, offset: 0x97E32, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwup', symObjAddr: 0x2AC, symBinAddr: 0x1172C, symSize: 0x4 }
- { offsetInCU: 0x197, offset: 0x97E46, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwui', symObjAddr: 0x2B0, symBinAddr: 0x11730, symSize: 0x8 }
- { offsetInCU: 0x1AB, offset: 0x97E5A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOMa', symObjAddr: 0x2B8, symBinAddr: 0x11738, symSize: 0x10 }
- { offsetInCU: 0x1E6, offset: 0x97E95, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x24, symBinAddr: 0x114B4, symSize: 0x14 }
- { offsetInCU: 0x277, offset: 0x97F26, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH9hashValueSivgTW', symObjAddr: 0x80, symBinAddr: 0x11510, symSize: 0x44 }
- { offsetInCU: 0x34F, offset: 0x97FFE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xC4, symBinAddr: 0x11554, symSize: 0x2C }
- { offsetInCU: 0x3CB, offset: 0x9807A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xF0, symBinAddr: 0x11580, symSize: 0x40 }
- { offsetInCU: 0x97, offset: 0x9821A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvg', symObjAddr: 0xBC, symBinAddr: 0x11804, symSize: 0x4C }
- { offsetInCU: 0xE0, offset: 0x98263, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5rulesAA5Rules_pvg', symObjAddr: 0x16C, symBinAddr: 0x118B4, symSize: 0x48 }
- { offsetInCU: 0xFF, offset: 0x98282, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC7playersSDyAA5OwnerOAA6PlayerCGvg', symObjAddr: 0x1F8, symBinAddr: 0x11940, symSize: 0x8 }
- { offsetInCU: 0x12C, offset: 0x982AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfC', symObjAddr: 0x200, symBinAddr: 0x11948, symSize: 0x64 }
- { offsetInCU: 0x151, offset: 0x982D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfc', symObjAddr: 0x264, symBinAddr: 0x119AC, symSize: 0x464 }
- { offsetInCU: 0x553, offset: 0x986D6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_', symObjAddr: 0x7B0, symBinAddr: 0x11E50, symSize: 0x84 }
- { offsetInCU: 0x602, offset: 0x98785, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TQ0_', symObjAddr: 0x834, symBinAddr: 0x11ED4, symSize: 0x68 }
- { offsetInCU: 0x69B, offset: 0x9881E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TY2_', symObjAddr: 0x89C, symBinAddr: 0x11F3C, symSize: 0x1C }
- { offsetInCU: 0x6E0, offset: 0x98863, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_', symObjAddr: 0x8B8, symBinAddr: 0x11F58, symSize: 0x84 }
- { offsetInCU: 0x78F, offset: 0x98912, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TQ0_', symObjAddr: 0x93C, symBinAddr: 0x11FDC, symSize: 0x68 }
- { offsetInCU: 0x828, offset: 0x989AB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TY1_', symObjAddr: 0x9A4, symBinAddr: 0x12044, symSize: 0xC }
- { offsetInCU: 0x882, offset: 0x98A05, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TY2_', symObjAddr: 0x9B0, symBinAddr: 0x12050, symSize: 0x1C }
- { offsetInCU: 0x8C7, offset: 0x98A4A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withBoard8andRules0H7Player10H7Player2AcA0G0V_AA0I0_pAA6PlayerCALtKcfC', symObjAddr: 0x9CC, symBinAddr: 0x1206C, symSize: 0x6C }
- { offsetInCU: 0x8EC, offset: 0x98A6F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withBoard8andRules0H7Player10H7Player2AcA0G0V_AA0I0_pAA6PlayerCALtKcfc', symObjAddr: 0xA38, symBinAddr: 0x120D8, symSize: 0x2C4 }
- { offsetInCU: 0x9E9, offset: 0x98B6C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE15StartedListeneryyyAA5BoardVcF', symObjAddr: 0xCFC, symBinAddr: 0x1239C, symSize: 0xD4 }
- { offsetInCU: 0xB14, offset: 0x98C97, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC25addPlayerNotifiedListeneryyyAA5BoardV_AA0G0CtYaKcF', symObjAddr: 0xDD0, symBinAddr: 0x12470, symSize: 0xD4 }
- { offsetInCU: 0xC3F, offset: 0x98DC2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE15ChangedListeneryyyACYacF', symObjAddr: 0xF58, symBinAddr: 0x125F8, symSize: 0xD4 }
- { offsetInCU: 0xD6A, offset: 0x98EED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE12OverListeneryyyAA5BoardV_AA6ResultOAA6PlayerCSgtcF', symObjAddr: 0x108C, symBinAddr: 0x1272C, symSize: 0xD4 }
- { offsetInCU: 0xE95, offset: 0x99018, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC30addMoveChosenCallbacksListeneryyyAA5BoardV_AA0G0VAA6PlayerCtcF', symObjAddr: 0x1160, symBinAddr: 0x12800, symSize: 0xD4 }
- { offsetInCU: 0xFC0, offset: 0x99143, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC31addInvalidMoveCallbacksListeneryyyAA5BoardV_AA0H0VAA6PlayerCSbtcF', symObjAddr: 0x1234, symBinAddr: 0x128D4, symSize: 0xD4 }
- { offsetInCU: 0x10EB, offset: 0x9926E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC23addBoardChangedListeneryyyAA0G0VcF', symObjAddr: 0x1308, symBinAddr: 0x129A8, symSize: 0xD4 }
- { offsetInCU: 0x1216, offset: 0x99399, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC23addPieceRemovedListeneryyySi_SiAA0G0VtcF', symObjAddr: 0x13DC, symBinAddr: 0x12A7C, symSize: 0xD4 }
- { offsetInCU: 0x135F, offset: 0x994E2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC18notifyPieceRemoved33_4E9958627B7DCD90B6D32369387417C3LLyySi_SiAA0G0VtF', symObjAddr: 0x14B0, symBinAddr: 0x12B50, symSize: 0xC8 }
- { offsetInCU: 0x150C, offset: 0x9968F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKF', symObjAddr: 0x1578, symBinAddr: 0x12C18, symSize: 0x28 }
- { offsetInCU: 0x1914, offset: 0x99A97, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY0_', symObjAddr: 0x15A0, symBinAddr: 0x12C40, symSize: 0x9E8 }
- { offsetInCU: 0x267D, offset: 0x9A800, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTQ1_', symObjAddr: 0x1F88, symBinAddr: 0x13628, symSize: 0x60 }
- { offsetInCU: 0x27B0, offset: 0x9A933, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY2_', symObjAddr: 0x1FE8, symBinAddr: 0x13688, symSize: 0x220 }
- { offsetInCU: 0x2AB9, offset: 0x9AC3C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTQ3_', symObjAddr: 0x2208, symBinAddr: 0x138A8, symSize: 0x70 }
- { offsetInCU: 0x2BB2, offset: 0x9AD35, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY4_', symObjAddr: 0x2278, symBinAddr: 0x13918, symSize: 0x10C }
- { offsetInCU: 0x2CE1, offset: 0x9AE64, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY5_', symObjAddr: 0x2384, symBinAddr: 0x13A24, symSize: 0x5C }
- { offsetInCU: 0x2D8F, offset: 0x9AF12, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC6isOverSbvg', symObjAddr: 0x23E0, symBinAddr: 0x13A80, symSize: 0x30 }
- { offsetInCU: 0x2DAC, offset: 0x9AF2F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKF', symObjAddr: 0x2410, symBinAddr: 0x13AB0, symSize: 0x18 }
- { offsetInCU: 0x2E63, offset: 0x9AFE6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY0_', symObjAddr: 0x2428, symBinAddr: 0x13AC8, symSize: 0x348 }
- { offsetInCU: 0x3351, offset: 0x9B4D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTQ1_', symObjAddr: 0x2770, symBinAddr: 0x13E10, symSize: 0x60 }
- { offsetInCU: 0x33ED, offset: 0x9B570, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY2_', symObjAddr: 0x27D0, symBinAddr: 0x13E70, symSize: 0x210 }
- { offsetInCU: 0x3666, offset: 0x9B7E9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTQ3_', symObjAddr: 0x29E0, symBinAddr: 0x14080, symSize: 0x70 }
- { offsetInCU: 0x370F, offset: 0x9B892, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY4_', symObjAddr: 0x2A50, symBinAddr: 0x140F0, symSize: 0x104 }
- { offsetInCU: 0x37EF, offset: 0x9B972, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY5_', symObjAddr: 0x2B54, symBinAddr: 0x141F4, symSize: 0x5C }
- { offsetInCU: 0x383E, offset: 0x9B9C1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCfd', symObjAddr: 0x2BB0, symBinAddr: 0x14250, symSize: 0x6C }
- { offsetInCU: 0x386B, offset: 0x9B9EE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCfD', symObjAddr: 0x2C1C, symBinAddr: 0x142BC, symSize: 0x1C }
- { offsetInCU: 0x3899, offset: 0x9BA1C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvpACTK', symObjAddr: 0x0, symBinAddr: 0x11748, symSize: 0x50 }
- { offsetInCU: 0x38CF, offset: 0x9BA52, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvpACTk', symObjAddr: 0x50, symBinAddr: 0x11798, symSize: 0x6C }
- { offsetInCU: 0x390F, offset: 0x9BA92, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5rulesAA5Rules_pvpACTk', symObjAddr: 0x108, symBinAddr: 0x11850, symSize: 0x64 }
- { offsetInCU: 0x3951, offset: 0x9BAD4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5Rules_pWOc', symObjAddr: 0x1B4, symBinAddr: 0x118FC, symSize: 0x44 }
- { offsetInCU: 0x3A57, offset: 0x9BBDA, size: 0x8, addend: 0x0, symName: ___swift_destroy_boxed_opaque_existential_1, symObjAddr: 0x730, symBinAddr: 0x11E10, symSize: 0x20 }
- { offsetInCU: 0x3A6B, offset: 0x9BBEE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCMa', symObjAddr: 0x750, symBinAddr: 0x11E30, symSize: 0x20 }
- { offsetInCU: 0x3B93, offset: 0x9BD16, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TR', symObjAddr: 0xEA4, symBinAddr: 0x12544, symSize: 0x6C }
- { offsetInCU: 0x3BC6, offset: 0x9BD49, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TRTQ0_', symObjAddr: 0xF10, symBinAddr: 0x125B0, symSize: 0x48 }
- { offsetInCU: 0x3C82, offset: 0x9BE05, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TR', symObjAddr: 0x102C, symBinAddr: 0x126CC, symSize: 0x60 }
- { offsetInCU: 0x40E5, offset: 0x9C268, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TA', symObjAddr: 0x2C38, symBinAddr: 0x142D8, symSize: 0x60 }
- { offsetInCU: 0x4115, offset: 0x9C298, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA', symObjAddr: 0x2CBC, symBinAddr: 0x1435C, symSize: 0x88 }
- { offsetInCU: 0x4145, offset: 0x9C2C8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TA', symObjAddr: 0x2D44, symBinAddr: 0x143E4, symSize: 0x60 }
- { offsetInCU: 0x4175, offset: 0x9C2F8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA.7', symObjAddr: 0x2DA4, symBinAddr: 0x14444, symSize: 0x88 }
- { offsetInCU: 0x41A9, offset: 0x9C32C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVIegn_ACytIegnr_TRTA', symObjAddr: 0x2E2C, symBinAddr: 0x144CC, symSize: 0x20 }
- { offsetInCU: 0x41D9, offset: 0x9C35C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TRTA', symObjAddr: 0x2E4C, symBinAddr: 0x144EC, symSize: 0x88 }
- { offsetInCU: 0x4209, offset: 0x9C38C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TRTA', symObjAddr: 0x2ED4, symBinAddr: 0x14574, symSize: 0x80 }
- { offsetInCU: 0x4239, offset: 0x9C3BC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TRTATQ0_', symObjAddr: 0x2F54, symBinAddr: 0x145F4, symSize: 0x48 }
- { offsetInCU: 0x4295, offset: 0x9C418, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6ResultOAA6PlayerCSgIegnng_AceHytIegnnnr_TRTA', symObjAddr: 0x2F9C, symBinAddr: 0x1463C, symSize: 0x24 }
- { offsetInCU: 0x42C9, offset: 0x9C44C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA4MoveVAA6PlayerCIegnng_AceGytIegnnnr_TRTA', symObjAddr: 0x2FC0, symBinAddr: 0x14660, symSize: 0x24 }
- { offsetInCU: 0x42FD, offset: 0x9C480, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA4MoveVAA6PlayerCSbIegnngy_AceGSbytIegnnnnr_TRTA', symObjAddr: 0x2FE4, symBinAddr: 0x14684, symSize: 0x28 }
- { offsetInCU: 0x4331, offset: 0x9C4B4, size: 0x8, addend: 0x0, symName: '_$sS2i14DouShouQiModel5PieceVIegyyn_S2iACytIegnnnr_TRTA', symObjAddr: 0x300C, symBinAddr: 0x146AC, symSize: 0x28 }
- { offsetInCU: 0x435A, offset: 0x9C4DD, size: 0x8, addend: 0x0, symName: ___swift_mutable_project_boxed_opaque_existential_1, symObjAddr: 0x3034, symBinAddr: 0x146D4, symSize: 0x28 }
- { offsetInCU: 0x436E, offset: 0x9C4F1, size: 0x8, addend: 0x0, symName: ___swift_assign_boxed_opaque_existential_1, symObjAddr: 0x3308, symBinAddr: 0x149A8, symSize: 0x168 }
...

@ -1,487 +0,0 @@
---
triple: 'x86_64-apple-darwin'
binary-path: '/Users/marcchevaldonne/Library/Developer/Xcode/DerivedData/DouShouQiModel-bzzvovsrfmbhuydeirorjmljgtyf/Build/Intermediates.noindex/ArchiveIntermediates/DouShouQiModel/InstallationBuildProductsLocation/Library/Frameworks/DouShouQiModel.framework/Versions/A/DouShouQiModel'
relocations:
- { offsetInCU: 0x34, offset: 0x87BD7, size: 0x8, addend: 0x0, symName: _DouShouQiModelVersionString, symObjAddr: 0x0, symBinAddr: 0x14EC0, symSize: 0x0 }
- { offsetInCU: 0x69, offset: 0x87C0C, size: 0x8, addend: 0x0, symName: _DouShouQiModelVersionNumber, symObjAddr: 0x38, symBinAddr: 0x14EF8, symSize: 0x0 }
- { offsetInCU: 0x27, offset: 0x87C49, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x3A30, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x87C6D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x3A30, symSize: 0x10 }
- { offsetInCU: 0x6E, offset: 0x87C90, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x20, symBinAddr: 0x3A50, symSize: 0x10 }
- { offsetInCU: 0x9F, offset: 0x87CC1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x140, symBinAddr: 0x3B70, symSize: 0x40 }
- { offsetInCU: 0xE5, offset: 0x87D07, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO2eeoiySbAC_ACtFZ', symObjAddr: 0x10, symBinAddr: 0x3A40, symSize: 0x10 }
- { offsetInCU: 0x114, offset: 0x87D36, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO4hash4intoys6HasherVz_tF', symObjAddr: 0x30, symBinAddr: 0x3A60, symSize: 0x20 }
- { offsetInCU: 0x1AA, offset: 0x87DCC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO9hashValueSivg', symObjAddr: 0x50, symBinAddr: 0x3A80, symSize: 0x40 }
- { offsetInCU: 0x2A5, offset: 0x87EC7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x90, symBinAddr: 0x3AC0, symSize: 0x10 }
- { offsetInCU: 0x2FB, offset: 0x87F1D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH9hashValueSivgTW', symObjAddr: 0xA0, symBinAddr: 0x3AD0, symSize: 0x40 }
- { offsetInCU: 0x3DF, offset: 0x88001, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x3B10, symSize: 0x20 }
- { offsetInCU: 0x468, offset: 0x8808A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASQWb', symObjAddr: 0x180, symBinAddr: 0x3BB0, symSize: 0x10 }
- { offsetInCU: 0x47C, offset: 0x8809E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOACSQAAWl', symObjAddr: 0x190, symBinAddr: 0x3BC0, symSize: 0x30 }
- { offsetInCU: 0x490, offset: 0x880B2, size: 0x8, addend: 0x0, symName: ___swift_memcpy2_1, symObjAddr: 0x1C0, symBinAddr: 0x3BF0, symSize: 0x10 }
- { offsetInCU: 0x4A4, offset: 0x880C6, size: 0x8, addend: 0x0, symName: ___swift_noop_void_return, symObjAddr: 0x1D0, symBinAddr: 0x3C00, symSize: 0x10 }
- { offsetInCU: 0x4B8, offset: 0x880DA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwet', symObjAddr: 0x1E0, symBinAddr: 0x3C10, symSize: 0xB0 }
- { offsetInCU: 0x4CC, offset: 0x880EE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwst', symObjAddr: 0x290, symBinAddr: 0x3CC0, symSize: 0xE0 }
- { offsetInCU: 0x4E0, offset: 0x88102, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwug', symObjAddr: 0x370, symBinAddr: 0x3DA0, symSize: 0x20 }
- { offsetInCU: 0x4F4, offset: 0x88116, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwup', symObjAddr: 0x390, symBinAddr: 0x3DC0, symSize: 0x10 }
- { offsetInCU: 0x508, offset: 0x8812A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwui', symObjAddr: 0x3A0, symBinAddr: 0x3DD0, symSize: 0x30 }
- { offsetInCU: 0x51C, offset: 0x8813E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOMa', symObjAddr: 0x3D0, symBinAddr: 0x3E00, symSize: 0x10 }
- { offsetInCU: 0x530, offset: 0x88152, size: 0x8, addend: 0x0, symName: ___swift_memcpy1_1, symObjAddr: 0x3E0, symBinAddr: 0x3E10, symSize: 0x10 }
- { offsetInCU: 0x544, offset: 0x88166, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwet', symObjAddr: 0x3F0, symBinAddr: 0x3E20, symSize: 0x80 }
- { offsetInCU: 0x558, offset: 0x8817A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwst', symObjAddr: 0x470, symBinAddr: 0x3EA0, symSize: 0xD0 }
- { offsetInCU: 0x56C, offset: 0x8818E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwug', symObjAddr: 0x540, symBinAddr: 0x3F70, symSize: 0x10 }
- { offsetInCU: 0x580, offset: 0x881A2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwup', symObjAddr: 0x550, symBinAddr: 0x3F80, symSize: 0x10 }
- { offsetInCU: 0x594, offset: 0x881B6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwui', symObjAddr: 0x560, symBinAddr: 0x3F90, symSize: 0x10 }
- { offsetInCU: 0x5A8, offset: 0x881CA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOMa', symObjAddr: 0x570, symBinAddr: 0x3FA0, symSize: 0xA }
- { offsetInCU: 0x624, offset: 0x88246, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x100, symBinAddr: 0x3B30, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x8838B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x3FB0, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x883AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x3FB0, symSize: 0x10 }
- { offsetInCU: 0x6E, offset: 0x883D2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x20, symBinAddr: 0x3FD0, symSize: 0x10 }
- { offsetInCU: 0x9F, offset: 0x88403, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x140, symBinAddr: 0x40F0, symSize: 0x60 }
- { offsetInCU: 0x113, offset: 0x88477, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO2eeoiySbAC_ACtFZ', symObjAddr: 0x10, symBinAddr: 0x3FC0, symSize: 0x10 }
- { offsetInCU: 0x142, offset: 0x884A6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO4hash4intoys6HasherVz_tF', symObjAddr: 0x30, symBinAddr: 0x3FE0, symSize: 0x20 }
- { offsetInCU: 0x1D8, offset: 0x8853C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO9hashValueSivg', symObjAddr: 0x50, symBinAddr: 0x4000, symSize: 0x40 }
- { offsetInCU: 0x2D3, offset: 0x88637, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x90, symBinAddr: 0x4040, symSize: 0x10 }
- { offsetInCU: 0x329, offset: 0x8868D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH9hashValueSivgTW', symObjAddr: 0xA0, symBinAddr: 0x4050, symSize: 0x40 }
- { offsetInCU: 0x40D, offset: 0x88771, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x4090, symSize: 0x20 }
- { offsetInCU: 0x496, offset: 0x887FA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASQWb', symObjAddr: 0x1A0, symBinAddr: 0x4150, symSize: 0x10 }
- { offsetInCU: 0x4AA, offset: 0x8880E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOACSQAAWl', symObjAddr: 0x1B0, symBinAddr: 0x4160, symSize: 0x30 }
- { offsetInCU: 0x4BE, offset: 0x88822, size: 0x8, addend: 0x0, symName: ___swift_memcpy3_1, symObjAddr: 0x1E0, symBinAddr: 0x4190, symSize: 0x20 }
- { offsetInCU: 0x4D2, offset: 0x88836, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwet', symObjAddr: 0x210, symBinAddr: 0x41B0, symSize: 0x70 }
- { offsetInCU: 0x4E6, offset: 0x8884A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwst', symObjAddr: 0x280, symBinAddr: 0x4220, symSize: 0x80 }
- { offsetInCU: 0x4FA, offset: 0x8885E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwug', symObjAddr: 0x300, symBinAddr: 0x42A0, symSize: 0x20 }
- { offsetInCU: 0x50E, offset: 0x88872, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwup', symObjAddr: 0x320, symBinAddr: 0x42C0, symSize: 0x10 }
- { offsetInCU: 0x522, offset: 0x88886, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwui', symObjAddr: 0x330, symBinAddr: 0x42D0, symSize: 0x20 }
- { offsetInCU: 0x536, offset: 0x8889A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOMa', symObjAddr: 0x350, symBinAddr: 0x42F0, symSize: 0x10 }
- { offsetInCU: 0x54A, offset: 0x888AE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwet', symObjAddr: 0x370, symBinAddr: 0x4300, symSize: 0x80 }
- { offsetInCU: 0x55E, offset: 0x888C2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwst', symObjAddr: 0x3F0, symBinAddr: 0x4380, symSize: 0xD0 }
- { offsetInCU: 0x572, offset: 0x888D6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwug', symObjAddr: 0x4C0, symBinAddr: 0x4450, symSize: 0x10 }
- { offsetInCU: 0x586, offset: 0x888EA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwup', symObjAddr: 0x4D0, symBinAddr: 0x4460, symSize: 0x10 }
- { offsetInCU: 0x59A, offset: 0x888FE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwui', symObjAddr: 0x4E0, symBinAddr: 0x4470, symSize: 0x10 }
- { offsetInCU: 0x5AE, offset: 0x88912, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOMa', symObjAddr: 0x4F0, symBinAddr: 0x4480, symSize: 0xA }
- { offsetInCU: 0x60E, offset: 0x88972, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x100, symBinAddr: 0x40B0, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x88AA3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfC', symObjAddr: 0x0, symBinAddr: 0x4490, symSize: 0xD0 }
- { offsetInCU: 0x99, offset: 0x88B15, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfC', symObjAddr: 0x0, symBinAddr: 0x4490, symSize: 0xD0 }
- { offsetInCU: 0x124, offset: 0x88BA0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfc', symObjAddr: 0xD0, symBinAddr: 0x4560, symSize: 0xA0 }
- { offsetInCU: 0x1EB, offset: 0x88C67, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x190, symBinAddr: 0x4620, symSize: 0xA0 }
- { offsetInCU: 0x276, offset: 0x88CF2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x230, symBinAddr: 0x46C0, symSize: 0x70 }
- { offsetInCU: 0x2F3, offset: 0x88D6F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x2A0, symBinAddr: 0x4730, symSize: 0x30 }
- { offsetInCU: 0x36F, offset: 0x88DEB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC11changeInput5inputyAA4MoveVSgACc_tF', symObjAddr: 0x2D0, symBinAddr: 0x4760, symSize: 0x30 }
- { offsetInCU: 0x3D4, offset: 0x88E50, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKF', symObjAddr: 0x300, symBinAddr: 0x4790, symSize: 0x50 }
- { offsetInCU: 0x461, offset: 0x88EDD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY0_', symObjAddr: 0x350, symBinAddr: 0x47E0, symSize: 0x110 }
- { offsetInCU: 0x5B9, offset: 0x89035, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTQ1_', symObjAddr: 0x460, symBinAddr: 0x48F0, symSize: 0x80 }
- { offsetInCU: 0x669, offset: 0x890E5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY2_', symObjAddr: 0x4E0, symBinAddr: 0x4970, symSize: 0x120 }
- { offsetInCU: 0x744, offset: 0x891C0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY3_', symObjAddr: 0x600, symBinAddr: 0x4A90, symSize: 0x50 }
- { offsetInCU: 0x7A2, offset: 0x8921E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfd', symObjAddr: 0x670, symBinAddr: 0x4B00, symSize: 0x30 }
- { offsetInCU: 0x7F3, offset: 0x8926F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfD', symObjAddr: 0x6A0, symBinAddr: 0x4B30, symSize: 0x40 }
- { offsetInCU: 0x92F, offset: 0x893AB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCAA4MoveVSgIeggr_SgWOe', symObjAddr: 0x170, symBinAddr: 0x4600, symSize: 0x20 }
- { offsetInCU: 0x9E9, offset: 0x89465, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfE', symObjAddr: 0x650, symBinAddr: 0x4AE0, symSize: 0x20 }
- { offsetInCU: 0xA16, offset: 0x89492, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCMa', symObjAddr: 0x6E0, symBinAddr: 0x4B70, symSize: 0x20 }
- { offsetInCU: 0x4F, offset: 0x89641, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11initialGridSaySayAA4CellVGGvpZ', symObjAddr: 0x2C420, symBinAddr: 0x1DB40, symSize: 0x0 }
- { offsetInCU: 0x69, offset: 0x8965B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV6pieces33_DFC7A53241A8EF79AF2B79A48A65C265LLShyAA5PieceVGvpZ', symObjAddr: 0x71D0, symBinAddr: 0x1C720, symSize: 0x0 }
- { offsetInCU: 0xD7, offset: 0x896C9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZ', symObjAddr: 0x71D8, symBinAddr: 0x1C728, symSize: 0x0 }
- { offsetInCU: 0xF1, offset: 0x896E3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15iteratingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardV_S2itKcGvpZ', symObjAddr: 0x71E0, symBinAddr: 0x1C730, symSize: 0x0 }
- { offsetInCU: 0x10B, offset: 0x896FD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12endingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZ', symObjAddr: 0x71E8, symBinAddr: 0x1C738, symSize: 0x0 }
- { offsetInCU: 0x125, offset: 0x89717, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16placesByCellTypeSDyAA0iJ0OSaySi3row_Si3coltGGvpZ', symObjAddr: 0x2C428, symBinAddr: 0x1DB48, symSize: 0x0 }
- { offsetInCU: 0x2A8, offset: 0x8989A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0x4CA0, symSize: 0x2C0 }
- { offsetInCU: 0xAC6, offset: 0x8A0B8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11createBoardAA0H0VyFZ', symObjAddr: 0x2C0, symBinAddr: 0x4F60, symSize: 0x70 }
- { offsetInCU: 0xB04, offset: 0x8A0F6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10checkBoardyyAA0H0VKFZ', symObjAddr: 0x330, symBinAddr: 0x4FD0, symSize: 0x10 }
- { offsetInCU: 0xB2E, offset: 0x8A120, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZfiyAGcfU_', symObjAddr: 0x390, symBinAddr: 0x5030, symSize: 0x30 }
- { offsetInCU: 0xB6E, offset: 0x8A160, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZfiyAGcfU0_', symObjAddr: 0x3C0, symBinAddr: 0x5060, symSize: 0x60 }
- { offsetInCU: 0xBC0, offset: 0x8A1B2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVACycfC', symObjAddr: 0x650, symBinAddr: 0x52F0, symSize: 0x30 }
- { offsetInCU: 0xC05, offset: 0x8A1F7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10occurences8historicACSDyAA5BoardVSiG_SayAA4MoveVGtcfC', symObjAddr: 0x680, symBinAddr: 0x5320, symSize: 0x50 }
- { offsetInCU: 0xC6A, offset: 0x8A25C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV19findAuthorizedMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL5boardSayAA4MoveVGAA5BoardV_tF', symObjAddr: 0x6D0, symBinAddr: 0x5370, symSize: 0x460 }
- { offsetInCU: 0x15D1, offset: 0x8ABC3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12findRatMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0xB30, symBinAddr: 0x57D0, symSize: 0x740 }
- { offsetInCU: 0x2140, offset: 0x8B732, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV17findElephantMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x1270, symBinAddr: 0x5F10, symSize: 0x6D0 }
- { offsetInCU: 0x2BB3, offset: 0x8C1A5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16findDefaultMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x1940, symBinAddr: 0x65E0, symSize: 0x740 }
- { offsetInCU: 0x3725, offset: 0x8CD17, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV21findTigerAndLionMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x2080, symBinAddr: 0x6D20, symSize: 0x4C0 }
- { offsetInCU: 0x3DE7, offset: 0x8D3D9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV20findDirectNeighbours33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x2540, symBinAddr: 0x71E0, symSize: 0x390 }
- { offsetInCU: 0x4327, offset: 0x8D919, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV26findTigerAndLionNeighbours33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x28D0, symBinAddr: 0x7570, symSize: 0x5D0 }
- { offsetInCU: 0x4C67, offset: 0x8E259, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtF', symObjAddr: 0x2EA0, symBinAddr: 0x7B40, symSize: 0x140 }
- { offsetInCU: 0x4E34, offset: 0x8E426, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itF', symObjAddr: 0x2FE0, symBinAddr: 0x7C80, symSize: 0x150 }
- { offsetInCU: 0x505D, offset: 0x8E64F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11isMoveValid7onBoard7fromRow13andFromColumn02toM00n2ToP0SbAA0K0V_S4itF', symObjAddr: 0x3130, symBinAddr: 0x7DD0, symSize: 0x80 }
- { offsetInCU: 0x512F, offset: 0x8E721, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11isMoveValid7onBoard04withH0SbAA0K0V_AA0H0VtF', symObjAddr: 0x31B0, symBinAddr: 0x7E50, symSize: 0xF0 }
- { offsetInCU: 0x539B, offset: 0x8E98D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV13getNextPlayerAA5OwnerOyF', symObjAddr: 0x32A0, symBinAddr: 0x7F40, symSize: 0x30 }
- { offsetInCU: 0x5482, offset: 0x8EA74, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10isGameOver9withBoard16andLastRowPlayed0lM12ColumnPlayerSb_AA6ResultOtAA0K0V_S2itF', symObjAddr: 0x32D0, symBinAddr: 0x7F70, symSize: 0x1B0 }
- { offsetInCU: 0x5622, offset: 0x8EC14, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10playedMove_15onStartingBoard012andResultingK0yAA0H0V_AA0K0VAJtKF', symObjAddr: 0x3480, symBinAddr: 0x8120, symSize: 0x4F0 }
- { offsetInCU: 0x5B31, offset: 0x8F123, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10occurencesSDyAA5BoardVSiGvg', symObjAddr: 0x3970, symBinAddr: 0x8610, symSize: 0x10 }
- { offsetInCU: 0x5B45, offset: 0x8F137, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8historicSayAA4MoveVGvg', symObjAddr: 0x3980, symBinAddr: 0x8620, symSize: 0x10 }
- { offsetInCU: 0x5B77, offset: 0x8F169, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11createBoardAA0H0VyFZTW', symObjAddr: 0x3990, symBinAddr: 0x8630, symSize: 0x70 }
- { offsetInCU: 0x5BC4, offset: 0x8F1B6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10checkBoardyyAA0H0VKFZTW', symObjAddr: 0x3A00, symBinAddr: 0x86A0, symSize: 0x10 }
- { offsetInCU: 0x5BFC, offset: 0x8F1EE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP13getNextPlayerAA5OwnerOyFTW', symObjAddr: 0x3A10, symBinAddr: 0x86B0, symSize: 0x10 }
- { offsetInCU: 0x5C18, offset: 0x8F20A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtFTW', symObjAddr: 0x3A20, symBinAddr: 0x86C0, symSize: 0x10 }
- { offsetInCU: 0x5C34, offset: 0x8F226, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itFTW', symObjAddr: 0x3A30, symBinAddr: 0x86D0, symSize: 0x10 }
- { offsetInCU: 0x5C50, offset: 0x8F242, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11isMoveValid7onBoard7fromRow13andFromColumn02toM00n2ToP0SbAA0K0V_S4itFTW', symObjAddr: 0x3A40, symBinAddr: 0x86E0, symSize: 0x10 }
- { offsetInCU: 0x5C6C, offset: 0x8F25E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11isMoveValid7onBoard04withH0SbAA0K0V_AA0H0VtFTW', symObjAddr: 0x3A50, symBinAddr: 0x86F0, symSize: 0x10 }
- { offsetInCU: 0x5C88, offset: 0x8F27A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10isGameOver9withBoard16andLastRowPlayed0lM12ColumnPlayerSb_AA6ResultOtAA0K0V_S2itFTW', symObjAddr: 0x3A60, symBinAddr: 0x8700, symSize: 0x10 }
- { offsetInCU: 0x5CA4, offset: 0x8F296, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10playedMove_15onStartingBoard012andResultingK0yAA0H0V_AA0K0VALtKFTW', symObjAddr: 0x3A70, symBinAddr: 0x8710, symSize: 0x10 }
- { offsetInCU: 0x5CD9, offset: 0x8F2CB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0x3A80, symBinAddr: 0x8720, symSize: 0x10 }
- { offsetInCU: 0x5D1E, offset: 0x8F310, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0x3A90, symBinAddr: 0x8730, symSize: 0x10 }
- { offsetInCU: 0x5D51, offset: 0x8F343, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10checkBoardyyAA0H0VKFZTf4nd_n', symObjAddr: 0x5C40, symBinAddr: 0xA8E0, symSize: 0x2E0 }
- { offsetInCU: 0x60E8, offset: 0x8F6DA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV20initPlacesByCellType33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardVFZTf4nd_n', symObjAddr: 0x5F20, symBinAddr: 0xABC0, symSize: 0x3D0 }
- { offsetInCU: 0x65E9, offset: 0x8FBDB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV23checkCellsByTypeIterate33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x62F0, symBinAddr: 0xAF90, symSize: 0x150 }
- { offsetInCU: 0x6791, offset: 0x8FD83, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV18checkPiecesIterate33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x6440, symBinAddr: 0xB0E0, symSize: 0x150 }
- { offsetInCU: 0x6859, offset: 0x8FE4B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15checkWaterCells33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x6590, symBinAddr: 0xB230, symSize: 0xB0 }
- { offsetInCU: 0x695B, offset: 0x8FF4D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV6pieces33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x340, symBinAddr: 0x4FE0, symSize: 0x20 }
- { offsetInCU: 0x6975, offset: 0x8FF67, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x360, symBinAddr: 0x5000, symSize: 0x30 }
- { offsetInCU: 0x69AB, offset: 0x8FF9D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15iteratingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x420, symBinAddr: 0x50C0, symSize: 0x30 }
- { offsetInCU: 0x69C5, offset: 0x8FFB7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12endingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x4E0, symBinAddr: 0x5180, symSize: 0x20 }
- { offsetInCU: 0x69DF, offset: 0x8FFD1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16placesByCellType_WZ', symObjAddr: 0x500, symBinAddr: 0x51A0, symSize: 0x20 }
- { offsetInCU: 0x6F06, offset: 0x904F8, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8setValue_6forKeyyq_n_xtF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x3AA0, symBinAddr: 0x8740, symSize: 0xB0 }
- { offsetInCU: 0x6F7B, offset: 0x9056D, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x3B50, symBinAddr: 0x87F0, symSize: 0x60 }
- { offsetInCU: 0x6FA8, offset: 0x9059A, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x3BB0, symBinAddr: 0x8850, symSize: 0x30 }
- { offsetInCU: 0x6FEB, offset: 0x905DD, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x3BE0, symBinAddr: 0x8880, symSize: 0x50 }
- { offsetInCU: 0x7063, offset: 0x90655, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x3C30, symBinAddr: 0x88D0, symSize: 0xD0 }
- { offsetInCU: 0x719B, offset: 0x9078D, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x3D00, symBinAddr: 0x89A0, symSize: 0x30 }
- { offsetInCU: 0x71BE, offset: 0x907B0, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5.resume.0', symObjAddr: 0x3D30, symBinAddr: 0x89D0, symSize: 0x20 }
- { offsetInCU: 0x71F9, offset: 0x907EB, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV12mutatingFind_8isUniques10_HashTableV6BucketV6bucket_Sb5foundtx_SbtF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x3D50, symBinAddr: 0x89F0, symSize: 0xB0 }
- { offsetInCU: 0x7261, offset: 0x90853, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV12mutatingFind_8isUniques10_HashTableV6BucketV6bucket_Sb5foundtx_SbtF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x3E00, symBinAddr: 0x8AA0, symSize: 0xC0 }
- { offsetInCU: 0x72B7, offset: 0x908A9, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF14DouShouQiModel5BoardV_TB5', symObjAddr: 0x3EC0, symBinAddr: 0x8B60, symSize: 0x80 }
- { offsetInCU: 0x7324, offset: 0x90916, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x3FA0, symBinAddr: 0x8C40, symSize: 0x1E0 }
- { offsetInCU: 0x7447, offset: 0x90A39, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x4180, symBinAddr: 0x8E20, symSize: 0x50 }
- { offsetInCU: 0x7518, offset: 0x90B0A, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF14DouShouQiModel5BoardV_TB5', symObjAddr: 0x41D0, symBinAddr: 0x8E70, symSize: 0x210 }
- { offsetInCU: 0x76D8, offset: 0x90CCA, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x4470, symBinAddr: 0x9110, symSize: 0x200 }
- { offsetInCU: 0x7751, offset: 0x90D43, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF14DouShouQiModel5BoardV_SiTg5', symObjAddr: 0x4670, symBinAddr: 0x9310, symSize: 0x210 }
- { offsetInCU: 0x77EB, offset: 0x90DDD, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x4880, symBinAddr: 0x9520, symSize: 0x380 }
- { offsetInCU: 0x7988, offset: 0x90F7A, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF14DouShouQiModel5BoardV_SiTg5', symObjAddr: 0x4C00, symBinAddr: 0x98A0, symSize: 0x330 }
- { offsetInCU: 0x7AAF, offset: 0x910A1, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x4F30, symBinAddr: 0x9BD0, symSize: 0x140 }
- { offsetInCU: 0x7CC8, offset: 0x912BA, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x5070, symBinAddr: 0x9D10, symSize: 0x160 }
- { offsetInCU: 0x7EF4, offset: 0x914E6, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x51D0, symBinAddr: 0x9E70, symSize: 0x1C0 }
- { offsetInCU: 0x7F58, offset: 0x9154A, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x5390, symBinAddr: 0xA030, symSize: 0x2F0 }
- { offsetInCU: 0x8173, offset: 0x91765, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x5680, symBinAddr: 0xA320, symSize: 0x350 }
- { offsetInCU: 0x83B8, offset: 0x919AA, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x59D0, symBinAddr: 0xA670, symSize: 0x20 }
- { offsetInCU: 0x83D0, offset: 0x919C2, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x59F0, symBinAddr: 0xA690, symSize: 0x20 }
- { offsetInCU: 0x842A, offset: 0x91A1C, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x5A10, symBinAddr: 0xA6B0, symSize: 0x120 }
- { offsetInCU: 0x8582, offset: 0x91B74, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x5B30, symBinAddr: 0xA7D0, symSize: 0x110 }
- { offsetInCU: 0x87DD, offset: 0x91DCF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOACs0F0AAWl', symObjAddr: 0x6830, symBinAddr: 0xB4D0, symSize: 0x30 }
- { offsetInCU: 0x87F1, offset: 0x91DE3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOACs0G0AAWl', symObjAddr: 0x6860, symBinAddr: 0xB500, symSize: 0x30 }
- { offsetInCU: 0x8805, offset: 0x91DF7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwCP', symObjAddr: 0x6890, symBinAddr: 0xB530, symSize: 0x30 }
- { offsetInCU: 0x8819, offset: 0x91E0B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwxx', symObjAddr: 0x68C0, symBinAddr: 0xB560, symSize: 0x20 }
- { offsetInCU: 0x882D, offset: 0x91E1F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwcp', symObjAddr: 0x68E0, symBinAddr: 0xB580, symSize: 0x30 }
- { offsetInCU: 0x8841, offset: 0x91E33, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwca', symObjAddr: 0x6910, symBinAddr: 0xB5B0, symSize: 0x50 }
- { offsetInCU: 0x8855, offset: 0x91E47, size: 0x8, addend: 0x0, symName: ___swift_memcpy16_8, symObjAddr: 0x6960, symBinAddr: 0xB600, symSize: 0x10 }
- { offsetInCU: 0x8869, offset: 0x91E5B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwta', symObjAddr: 0x6970, symBinAddr: 0xB610, symSize: 0x30 }
- { offsetInCU: 0x887D, offset: 0x91E6F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwet', symObjAddr: 0x69A0, symBinAddr: 0xB640, symSize: 0x40 }
- { offsetInCU: 0x8891, offset: 0x91E83, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwst', symObjAddr: 0x69E0, symBinAddr: 0xB680, symSize: 0x40 }
- { offsetInCU: 0x88A5, offset: 0x91E97, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVMa', symObjAddr: 0x6A20, symBinAddr: 0xB6C0, symSize: 0x10 }
- { offsetInCU: 0x88B9, offset: 0x91EAB, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledName, symObjAddr: 0x6A30, symBinAddr: 0xB6D0, symSize: 0x40 }
- { offsetInCU: 0x897D, offset: 0x91F6F, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy14DouShouQiModel4MoveVG_s15EmptyCollectionVyANGTg5Tf4nndn_n', symObjAddr: 0x6B70, symBinAddr: 0xB810, symSize: 0x150 }
- { offsetInCU: 0x8A4E, offset: 0x92040, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lF14DouShouQiModel4MoveV_s15EmptyCollectionVyAHGTg5Tf4ndn_n', symObjAddr: 0x6CC0, symBinAddr: 0xB960, symSize: 0xA0 }
- { offsetInCU: 0x8C62, offset: 0x92254, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x520, symBinAddr: 0x51C0, symSize: 0x40 }
- { offsetInCU: 0x8C7E, offset: 0x92270, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x560, symBinAddr: 0x5200, symSize: 0x20 }
- { offsetInCU: 0x8D2A, offset: 0x9231C, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x580, symBinAddr: 0x5220, symSize: 0xD0 }
- { offsetInCU: 0x92B5, offset: 0x928A7, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5Tf4gd_n', symObjAddr: 0x6640, symBinAddr: 0xB2E0, symSize: 0x100 }
- { offsetInCU: 0x93E7, offset: 0x929D9, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel5BoardV_SiTg5Tf4gd_n', symObjAddr: 0x6740, symBinAddr: 0xB3E0, symSize: 0xF0 }
- { offsetInCU: 0x9537, offset: 0x92B29, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel5OwnerO_AC6PlayerCTg5Tf4gd_n', symObjAddr: 0x6A70, symBinAddr: 0xB710, symSize: 0x100 }
- { offsetInCU: 0x27, offset: 0x92E77, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV6ofType7ownedBy9withPieceAcA0eG0O_AA5OwnerOAA0K0VSgtcfC', symObjAddr: 0x0, symBinAddr: 0xBE00, symSize: 0x20 }
- { offsetInCU: 0x4B, offset: 0x92E9B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV6ofType7ownedBy9withPieceAcA0eG0O_AA5OwnerOAA0K0VSgtcfC', symObjAddr: 0x0, symBinAddr: 0xBE00, symSize: 0x20 }
- { offsetInCU: 0x9A, offset: 0x92EEA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV11descriptionSSvg', symObjAddr: 0x20, symBinAddr: 0xBE20, symSize: 0x100 }
- { offsetInCU: 0x1DF, offset: 0x9302F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV8cellTypeAA0eG0Ovg', symObjAddr: 0x120, symBinAddr: 0xBF20, symSize: 0x10 }
- { offsetInCU: 0x1FD, offset: 0x9304D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV12initialOwnerAA0G0Ovg', symObjAddr: 0x130, symBinAddr: 0xBF30, symSize: 0x10 }
- { offsetInCU: 0x21B, offset: 0x9306B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvg', symObjAddr: 0x140, symBinAddr: 0xBF40, symSize: 0x10 }
- { offsetInCU: 0x239, offset: 0x93089, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvs', symObjAddr: 0x150, symBinAddr: 0xBF50, symSize: 0x10 }
- { offsetInCU: 0x277, offset: 0x930C7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvM', symObjAddr: 0x160, symBinAddr: 0xBF60, symSize: 0x20 }
- { offsetInCU: 0x2A5, offset: 0x930F5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvM.resume.0', symObjAddr: 0x180, symBinAddr: 0xBF80, symSize: 0x10 }
- { offsetInCU: 0x2D0, offset: 0x93120, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV2eeoiySbAC_ACtFZ', symObjAddr: 0x190, symBinAddr: 0xBF90, symSize: 0x10 }
- { offsetInCU: 0x2E4, offset: 0x93134, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x1A0, symBinAddr: 0xBFA0, symSize: 0x10 }
- { offsetInCU: 0x30F, offset: 0x9315F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1B0, symBinAddr: 0xBFB0, symSize: 0x10 }
- { offsetInCU: 0x340, offset: 0x93190, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x1C0, symBinAddr: 0xBFC0, symSize: 0x50 }
- { offsetInCU: 0x3B4, offset: 0x93204, size: 0x8, addend: 0x0, symName: ___swift_memcpy4_1, symObjAddr: 0x210, symBinAddr: 0xC010, symSize: 0x10 }
- { offsetInCU: 0x3C8, offset: 0x93218, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVwet', symObjAddr: 0x230, symBinAddr: 0xC020, symSize: 0x40 }
- { offsetInCU: 0x3DC, offset: 0x9322C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVwst', symObjAddr: 0x270, symBinAddr: 0xC060, symSize: 0x40 }
- { offsetInCU: 0x3F0, offset: 0x93240, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVMa', symObjAddr: 0x2B0, symBinAddr: 0xC0A0, symSize: 0xA }
- { offsetInCU: 0x2B, offset: 0x9334E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0xC0B0, symSize: 0x170 }
- { offsetInCU: 0x4F, offset: 0x93372, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGridSaySayAA4CellVGGvpZ', symObjAddr: 0xBD28, symBinAddr: 0x1DB50, symSize: 0x0 }
- { offsetInCU: 0x195, offset: 0x934B8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0xC0B0, symSize: 0x170 }
- { offsetInCU: 0x575, offset: 0x93898, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11createBoardAA0I0VyFZ', symObjAddr: 0x170, symBinAddr: 0xC220, symSize: 0x70 }
- { offsetInCU: 0x5B3, offset: 0x938D6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10checkBoardyyAA0I0VKFZ', symObjAddr: 0x1E0, symBinAddr: 0xC290, symSize: 0x10 }
- { offsetInCU: 0x5CE, offset: 0x938F1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVACycfC', symObjAddr: 0x1F0, symBinAddr: 0xC2A0, symSize: 0x30 }
- { offsetInCU: 0x612, offset: 0x93935, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10occurences8historicACSDyAA5BoardVSiG_SayAA4MoveVGtcfC', symObjAddr: 0x220, symBinAddr: 0xC2D0, symSize: 0x50 }
- { offsetInCU: 0x676, offset: 0x93999, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtF', symObjAddr: 0x270, symBinAddr: 0xC320, symSize: 0x1B0 }
- { offsetInCU: 0x9B0, offset: 0x93CD3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itF', symObjAddr: 0x420, symBinAddr: 0xC4D0, symSize: 0x2A0 }
- { offsetInCU: 0xDB1, offset: 0x940D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11isMoveValid7onBoard7fromRow13andFromColumn02toN00o2ToQ0SbAA0L0V_S4itF', symObjAddr: 0x6C0, symBinAddr: 0xC770, symSize: 0x80 }
- { offsetInCU: 0xEAA, offset: 0x941CD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11isMoveValid7onBoard04withI0SbAA0L0V_AA0I0VtF', symObjAddr: 0x740, symBinAddr: 0xC7F0, symSize: 0xF0 }
- { offsetInCU: 0x1085, offset: 0x943A8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV13getNextPlayerAA5OwnerOyF', symObjAddr: 0x830, symBinAddr: 0xC8E0, symSize: 0x30 }
- { offsetInCU: 0x116B, offset: 0x9448E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10isGameOver9withBoard16andLastRowPlayed0mN12ColumnPlayerSb_AA6ResultOtAA0L0V_S2itF', symObjAddr: 0x860, symBinAddr: 0xC910, symSize: 0x130 }
- { offsetInCU: 0x12C3, offset: 0x945E6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10playedMove_15onStartingBoard012andResultingL0yAA0I0V_AA0L0VAJtKF', symObjAddr: 0x990, symBinAddr: 0xCA40, symSize: 0x240 }
- { offsetInCU: 0x146A, offset: 0x9478D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10occurencesSDyAA5BoardVSiGvg', symObjAddr: 0xBD0, symBinAddr: 0xCC80, symSize: 0x10 }
- { offsetInCU: 0x147E, offset: 0x947A1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8historicSayAA4MoveVGvg', symObjAddr: 0xBE0, symBinAddr: 0xCC90, symSize: 0x10 }
- { offsetInCU: 0x14B0, offset: 0x947D3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11createBoardAA0I0VyFZTW', symObjAddr: 0xBF0, symBinAddr: 0xCCA0, symSize: 0x70 }
- { offsetInCU: 0x14FD, offset: 0x94820, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10checkBoardyyAA0I0VKFZTW', symObjAddr: 0xC60, symBinAddr: 0xCD10, symSize: 0x10 }
- { offsetInCU: 0x1535, offset: 0x94858, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP13getNextPlayerAA5OwnerOyFTW', symObjAddr: 0xC70, symBinAddr: 0xCD20, symSize: 0x10 }
- { offsetInCU: 0x1551, offset: 0x94874, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtFTW', symObjAddr: 0xC80, symBinAddr: 0xCD30, symSize: 0x10 }
- { offsetInCU: 0x156D, offset: 0x94890, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itFTW', symObjAddr: 0xC90, symBinAddr: 0xCD40, symSize: 0x10 }
- { offsetInCU: 0x1589, offset: 0x948AC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11isMoveValid7onBoard7fromRow13andFromColumn02toN00o2ToQ0SbAA0L0V_S4itFTW', symObjAddr: 0xCA0, symBinAddr: 0xCD50, symSize: 0x10 }
- { offsetInCU: 0x15A5, offset: 0x948C8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11isMoveValid7onBoard04withI0SbAA0L0V_AA0I0VtFTW', symObjAddr: 0xCB0, symBinAddr: 0xCD60, symSize: 0x10 }
- { offsetInCU: 0x15C1, offset: 0x948E4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10isGameOver9withBoard16andLastRowPlayed0mN12ColumnPlayerSb_AA6ResultOtAA0L0V_S2itFTW', symObjAddr: 0xCC0, symBinAddr: 0xCD70, symSize: 0x10 }
- { offsetInCU: 0x15DD, offset: 0x94900, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10playedMove_15onStartingBoard012andResultingL0yAA0I0V_AA0L0VALtKFTW', symObjAddr: 0xCD0, symBinAddr: 0xCD80, symSize: 0x10 }
- { offsetInCU: 0x1611, offset: 0x94934, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0xCE0, symBinAddr: 0xCD90, symSize: 0x10 }
- { offsetInCU: 0x1654, offset: 0x94977, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0xCF0, symBinAddr: 0xCDA0, symSize: 0x10 }
- { offsetInCU: 0x1686, offset: 0x949A9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV16checkCellsByType33_2B29F97F1EE5509065CD9853A78D42F5LLyyAA5BoardVKFZTf4nd_n', symObjAddr: 0xD00, symBinAddr: 0xCDB0, symSize: 0x130 }
- { offsetInCU: 0x18E4, offset: 0x94C07, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11checkPieces33_2B29F97F1EE5509065CD9853A78D42F5LLyyAA5BoardVKFZTf4nd_n', symObjAddr: 0xE30, symBinAddr: 0xCEE0, symSize: 0x230 }
- { offsetInCU: 0x1CEA, offset: 0x9500D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10checkBoardyyAA0I0VKFZTf4nd_n', symObjAddr: 0x1060, symBinAddr: 0xD110, symSize: 0xC0 }
- { offsetInCU: 0x1F87, offset: 0x952AA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwCP', symObjAddr: 0x11C0, symBinAddr: 0xD1D0, symSize: 0x30 }
- { offsetInCU: 0x1F9B, offset: 0x952BE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwxx', symObjAddr: 0x11F0, symBinAddr: 0xD200, symSize: 0x20 }
- { offsetInCU: 0x1FAF, offset: 0x952D2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwcp', symObjAddr: 0x1210, symBinAddr: 0xD220, symSize: 0x30 }
- { offsetInCU: 0x1FC3, offset: 0x952E6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwca', symObjAddr: 0x1240, symBinAddr: 0xD250, symSize: 0x50 }
- { offsetInCU: 0x1FD7, offset: 0x952FA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwta', symObjAddr: 0x12A0, symBinAddr: 0xD2A0, symSize: 0x30 }
- { offsetInCU: 0x1FEB, offset: 0x9530E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwet', symObjAddr: 0x12D0, symBinAddr: 0xD2D0, symSize: 0x40 }
- { offsetInCU: 0x1FFF, offset: 0x95322, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwst', symObjAddr: 0x1310, symBinAddr: 0xD310, symSize: 0x40 }
- { offsetInCU: 0x2013, offset: 0x95336, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVMa', symObjAddr: 0x1350, symBinAddr: 0xD350, symSize: 0xA }
- { offsetInCU: 0x72, offset: 0x95704, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0xD410, symSize: 0x60 }
- { offsetInCU: 0xC3, offset: 0x95755, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCfd', symObjAddr: 0x80, symBinAddr: 0xD490, symSize: 0x20 }
- { offsetInCU: 0xE0, offset: 0x95772, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC26addPlayedCallbacksListeneryyyAA4MoveVSg_ACtYaKcF', symObjAddr: 0xA0, symBinAddr: 0xD4B0, symSize: 0xE0 }
- { offsetInCU: 0x1F4, offset: 0x95886, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKF', symObjAddr: 0x180, symBinAddr: 0xD590, symSize: 0x50 }
- { offsetInCU: 0x27B, offset: 0x9590D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY0_', symObjAddr: 0x1D0, symBinAddr: 0xD5E0, symSize: 0x110 }
- { offsetInCU: 0x3D9, offset: 0x95A6B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTQ1_', symObjAddr: 0x2E0, symBinAddr: 0xD6F0, symSize: 0x80 }
- { offsetInCU: 0x490, offset: 0x95B22, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY2_', symObjAddr: 0x360, symBinAddr: 0xD770, symSize: 0x120 }
- { offsetInCU: 0x571, offset: 0x95C03, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY3_', symObjAddr: 0x480, symBinAddr: 0xD890, symSize: 0x50 }
- { offsetInCU: 0x5E3, offset: 0x95C75, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC4nameSSvg', symObjAddr: 0x4D0, symBinAddr: 0xD8E0, symSize: 0x30 }
- { offsetInCU: 0x610, offset: 0x95CA2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC2idAA5OwnerOvg', symObjAddr: 0x500, symBinAddr: 0xD910, symSize: 0x10 }
- { offsetInCU: 0x673, offset: 0x95D05, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x510, symBinAddr: 0xD920, symSize: 0x90 }
- { offsetInCU: 0x6D0, offset: 0x95D62, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x5A0, symBinAddr: 0xD9B0, symSize: 0x30 }
- { offsetInCU: 0x740, offset: 0x95DD2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCfD', symObjAddr: 0x790, symBinAddr: 0xDBA0, symSize: 0x30 }
- { offsetInCU: 0x784, offset: 0x95E16, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCMa', symObjAddr: 0x60, symBinAddr: 0xD470, symSize: 0x20 }
- { offsetInCU: 0x88B, offset: 0x95F1D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TR', symObjAddr: 0x5D0, symBinAddr: 0xD9E0, symSize: 0x70 }
- { offsetInCU: 0x8C5, offset: 0x95F57, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTQ0_', symObjAddr: 0x640, symBinAddr: 0xDA50, symSize: 0x50 }
- { offsetInCU: 0x91F, offset: 0x95FB1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA', symObjAddr: 0x6B0, symBinAddr: 0xDAC0, symSize: 0x90 }
- { offsetInCU: 0x94F, offset: 0x95FE1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTATQ0_', symObjAddr: 0x740, symBinAddr: 0xDB50, symSize: 0x50 }
- { offsetInCU: 0xA11, offset: 0x960A3, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSi3row_Si3colt_Tg5', symObjAddr: 0x910, symBinAddr: 0xDD20, symSize: 0x110 }
- { offsetInCU: 0xB9C, offset: 0x9622E, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0xA60, symBinAddr: 0xDE30, symSize: 0x120 }
- { offsetInCU: 0xD3F, offset: 0x963D1, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0xB80, symBinAddr: 0xDF50, symSize: 0x110 }
- { offsetInCU: 0xEED, offset: 0x9657F, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSay14DouShouQiModel4CellVG_Tg5', symObjAddr: 0xC90, symBinAddr: 0xE060, symSize: 0x130 }
- { offsetInCU: 0x27, offset: 0x968B8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP7_domainSSvgTW', symObjAddr: 0x0, symBinAddr: 0xE3E0, symSize: 0x10 }
- { offsetInCU: 0x3F, offset: 0x968D0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwCP', symObjAddr: 0x40, symBinAddr: 0xE420, symSize: 0x60 }
- { offsetInCU: 0x53, offset: 0x968E4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwxx', symObjAddr: 0xA0, symBinAddr: 0xE480, symSize: 0x40 }
- { offsetInCU: 0x67, offset: 0x968F8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwcp', symObjAddr: 0xE0, symBinAddr: 0xE4C0, symSize: 0x60 }
- { offsetInCU: 0x7B, offset: 0x9690C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwca', symObjAddr: 0x140, symBinAddr: 0xE520, symSize: 0xB0 }
- { offsetInCU: 0x8F, offset: 0x96920, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwta', symObjAddr: 0x200, symBinAddr: 0xE5D0, symSize: 0x70 }
- { offsetInCU: 0xA3, offset: 0x96934, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwet', symObjAddr: 0x270, symBinAddr: 0xE640, symSize: 0x50 }
- { offsetInCU: 0xB7, offset: 0x96948, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwst', symObjAddr: 0x2C0, symBinAddr: 0xE690, symSize: 0x50 }
- { offsetInCU: 0xCB, offset: 0x9695C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwug', symObjAddr: 0x310, symBinAddr: 0xE6E0, symSize: 0x30 }
- { offsetInCU: 0xDF, offset: 0x96970, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwup', symObjAddr: 0x340, symBinAddr: 0xE710, symSize: 0x10 }
- { offsetInCU: 0xF3, offset: 0x96984, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwui', symObjAddr: 0x350, symBinAddr: 0xE720, symSize: 0x30 }
- { offsetInCU: 0x107, offset: 0x96998, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOMa', symObjAddr: 0x380, symBinAddr: 0xE750, symSize: 0xA }
- { offsetInCU: 0x12C, offset: 0x969BD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP7_domainSSvgTW', symObjAddr: 0x0, symBinAddr: 0xE3E0, symSize: 0x10 }
- { offsetInCU: 0x148, offset: 0x969D9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP5_codeSivgTW', symObjAddr: 0x10, symBinAddr: 0xE3F0, symSize: 0x10 }
- { offsetInCU: 0x164, offset: 0x969F5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP9_userInfoyXlSgvgTW', symObjAddr: 0x20, symBinAddr: 0xE400, symSize: 0x10 }
- { offsetInCU: 0x180, offset: 0x96A11, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0x30, symBinAddr: 0xE410, symSize: 0x10 }
- { offsetInCU: 0x27, offset: 0x96AA6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x0, symBinAddr: 0xE760, symSize: 0x40 }
- { offsetInCU: 0x52, offset: 0x96AD1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x0, symBinAddr: 0xE760, symSize: 0x40 }
- { offsetInCU: 0xBB, offset: 0x96B3A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY0_', symObjAddr: 0x40, symBinAddr: 0xE7A0, symSize: 0x200 }
- { offsetInCU: 0x394, offset: 0x96E13, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTQ1_', symObjAddr: 0x240, symBinAddr: 0xE9A0, symSize: 0x80 }
- { offsetInCU: 0x48D, offset: 0x96F0C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY2_', symObjAddr: 0x2C0, symBinAddr: 0xEA20, symSize: 0x140 }
- { offsetInCU: 0x5AF, offset: 0x9702E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY3_', symObjAddr: 0x400, symBinAddr: 0xEB60, symSize: 0x60 }
- { offsetInCU: 0x696, offset: 0x97115, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x490, symBinAddr: 0xEBF0, symSize: 0x90 }
- { offsetInCU: 0x72D, offset: 0x971AC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x520, symBinAddr: 0xEC80, symSize: 0x70 }
- { offsetInCU: 0x7B6, offset: 0x97235, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCfd', symObjAddr: 0x590, symBinAddr: 0xECF0, symSize: 0x20 }
- { offsetInCU: 0x815, offset: 0x97294, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCfD', symObjAddr: 0x5B0, symBinAddr: 0xED10, symSize: 0x30 }
- { offsetInCU: 0xA42, offset: 0x974C1, size: 0x8, addend: 0x0, symName: ___swift_project_boxed_opaque_existential_1, symObjAddr: 0x460, symBinAddr: 0xEBC0, symSize: 0x30 }
- { offsetInCU: 0xB2A, offset: 0x975A9, size: 0x8, addend: 0x0, symName: '_$sSGsE4next10upperBoundqd__qd___ts17FixedWidthIntegerRd__SURd__lFs27SystemRandomNumberGeneratorV_SuTg5', symObjAddr: 0x5E0, symBinAddr: 0xED40, symSize: 0xB0 }
- { offsetInCU: 0xBF7, offset: 0x97676, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCMa', symObjAddr: 0x690, symBinAddr: 0xEDF0, symSize: 0x14 }
- { offsetInCU: 0x27, offset: 0x97832, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO8allCasesSayACGvgZ', symObjAddr: 0x0, symBinAddr: 0xEE10, symSize: 0x40 }
- { offsetInCU: 0x6C, offset: 0x97877, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO8allCasesSayACGvgZ', symObjAddr: 0x0, symBinAddr: 0xEE10, symSize: 0x40 }
- { offsetInCU: 0xDB, offset: 0x978E6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO2eeoiySbAC_ACtFZ', symObjAddr: 0x80, symBinAddr: 0xEE50, symSize: 0x10 }
- { offsetInCU: 0x10A, offset: 0x97915, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO4hash4intoys6HasherVz_tF', symObjAddr: 0x90, symBinAddr: 0xEE60, symSize: 0x20 }
- { offsetInCU: 0x1A0, offset: 0x979AB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO9hashValueSivg', symObjAddr: 0xB0, symBinAddr: 0xEE80, symSize: 0x40 }
- { offsetInCU: 0x29B, offset: 0x97AA6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xF0, symBinAddr: 0xEEC0, symSize: 0x10 }
- { offsetInCU: 0x2F1, offset: 0x97AFC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x100, symBinAddr: 0xEED0, symSize: 0x40 }
- { offsetInCU: 0x3D5, offset: 0x97BE0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x140, symBinAddr: 0xEF10, symSize: 0x20 }
- { offsetInCU: 0x461, offset: 0x97C6C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOs12CaseIterableAAsADP8allCases03AllJ0QzvgZTW', symObjAddr: 0x270, symBinAddr: 0xF040, symSize: 0x50 }
- { offsetInCU: 0x4FD, offset: 0x97D08, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASQWb', symObjAddr: 0x1A0, symBinAddr: 0xEF70, symSize: 0x10 }
- { offsetInCU: 0x511, offset: 0x97D1C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOACSQAAWl', symObjAddr: 0x1B0, symBinAddr: 0xEF80, symSize: 0x30 }
- { offsetInCU: 0x525, offset: 0x97D30, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOs12CaseIterableAA8AllCasessADP_SlWT', symObjAddr: 0x1E0, symBinAddr: 0xEFB0, symSize: 0x10 }
- { offsetInCU: 0x539, offset: 0x97D44, size: 0x8, addend: 0x0, symName: '_$sSay14DouShouQiModel8CellTypeOGSayxGSlsWl', symObjAddr: 0x1F0, symBinAddr: 0xEFC0, symSize: 0x40 }
- { offsetInCU: 0x54D, offset: 0x97D58, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledNameAbstract, symObjAddr: 0x230, symBinAddr: 0xF000, symSize: 0x40 }
- { offsetInCU: 0x561, offset: 0x97D6C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwet', symObjAddr: 0x2E0, symBinAddr: 0xF090, symSize: 0x80 }
- { offsetInCU: 0x575, offset: 0x97D80, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwst', symObjAddr: 0x360, symBinAddr: 0xF110, symSize: 0xD0 }
- { offsetInCU: 0x589, offset: 0x97D94, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwug', symObjAddr: 0x430, symBinAddr: 0xF1E0, symSize: 0x10 }
- { offsetInCU: 0x59D, offset: 0x97DA8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwup', symObjAddr: 0x440, symBinAddr: 0xF1F0, symSize: 0x10 }
- { offsetInCU: 0x5B1, offset: 0x97DBC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwui', symObjAddr: 0x450, symBinAddr: 0xF200, symSize: 0x10 }
- { offsetInCU: 0x5C5, offset: 0x97DD0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOMa', symObjAddr: 0x460, symBinAddr: 0xF210, symSize: 0xA }
- { offsetInCU: 0x634, offset: 0x97E3F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x160, symBinAddr: 0xEF30, symSize: 0x40 }
- { offsetInCU: 0x2B, offset: 0x97F84, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV8withGridACSgSaySayAA4CellVGG_tcfC', symObjAddr: 0x0, symBinAddr: 0xF220, symSize: 0x60 }
- { offsetInCU: 0xA6, offset: 0x97FFF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV8withGridACSgSaySayAA4CellVGG_tcfC', symObjAddr: 0x0, symBinAddr: 0xF220, symSize: 0x60 }
- { offsetInCU: 0x285, offset: 0x981DE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11countPieces2ofSiAA5OwnerO_tF', symObjAddr: 0x60, symBinAddr: 0xF280, symSize: 0x1B0 }
- { offsetInCU: 0x529, offset: 0x98482, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV4hash4intoys6HasherVz_tF', symObjAddr: 0x210, symBinAddr: 0xF430, symSize: 0xB0 }
- { offsetInCU: 0x764, offset: 0x986BD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV6nbRowsSivg', symObjAddr: 0x2C0, symBinAddr: 0xF4E0, symSize: 0x10 }
- { offsetInCU: 0x782, offset: 0x986DB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV9nbColumnsSivg', symObjAddr: 0x2D0, symBinAddr: 0xF4F0, symSize: 0x10 }
- { offsetInCU: 0x7A0, offset: 0x986F9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV4gridSaySayAA4CellVGGvg', symObjAddr: 0x2E0, symBinAddr: 0xF500, symSize: 0x10 }
- { offsetInCU: 0x7BE, offset: 0x98717, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11countPiecesSi04nbOfgI7Player1_Si0higI7Player2tyF', symObjAddr: 0x2F0, symBinAddr: 0xF510, symSize: 0xA0 }
- { offsetInCU: 0x9F2, offset: 0x9894B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV6insert5piece5atRow9andColumnAA0E6ResultOAA5PieceV_S2itF', symObjAddr: 0x390, symBinAddr: 0xF5B0, symSize: 0x110 }
- { offsetInCU: 0xBA1, offset: 0x98AFA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11removePiece5atRow9andColumnAA0E6ResultOSi_SitF', symObjAddr: 0x4A0, symBinAddr: 0xF6C0, symSize: 0xF0 }
- { offsetInCU: 0xD6F, offset: 0x98CC8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV2eeoiySbAC_ACtFZ', symObjAddr: 0x590, symBinAddr: 0xF7B0, symSize: 0x30 }
- { offsetInCU: 0xDB1, offset: 0x98D0A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV9hashValueSivg', symObjAddr: 0x5C0, symBinAddr: 0xF7E0, symSize: 0x50 }
- { offsetInCU: 0xE3D, offset: 0x98D96, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH9hashValueSivgTW', symObjAddr: 0x610, symBinAddr: 0xF830, symSize: 0x50 }
- { offsetInCU: 0xECC, offset: 0x98E25, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x660, symBinAddr: 0xF880, symSize: 0x10 }
- { offsetInCU: 0xEFA, offset: 0x98E53, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x6C0, symBinAddr: 0xF8E0, symSize: 0x30 }
- { offsetInCU: 0x1189, offset: 0x990E2, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x6F0, symBinAddr: 0xF910, symSize: 0x20 }
- { offsetInCU: 0x11C1, offset: 0x9911A, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x710, symBinAddr: 0xF930, symSize: 0x20 }
- { offsetInCU: 0x11F9, offset: 0x99152, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSay14DouShouQiModel4CellVG_Tg5', symObjAddr: 0x730, symBinAddr: 0xF950, symSize: 0x20 }
- { offsetInCU: 0x1231, offset: 0x9918A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASQWb', symObjAddr: 0x8E0, symBinAddr: 0xFB00, symSize: 0x10 }
- { offsetInCU: 0x1245, offset: 0x9919E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVACSQAAWl', symObjAddr: 0x8F0, symBinAddr: 0xFB10, symSize: 0x30 }
- { offsetInCU: 0x1259, offset: 0x991B2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwCP', symObjAddr: 0x920, symBinAddr: 0xFB40, symSize: 0x30 }
- { offsetInCU: 0x126D, offset: 0x991C6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwxx', symObjAddr: 0x950, symBinAddr: 0xFB70, symSize: 0x10 }
- { offsetInCU: 0x1281, offset: 0x991DA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwcp', symObjAddr: 0x960, symBinAddr: 0xFB80, symSize: 0x30 }
- { offsetInCU: 0x1295, offset: 0x991EE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwca', symObjAddr: 0x990, symBinAddr: 0xFBB0, symSize: 0x40 }
- { offsetInCU: 0x12A9, offset: 0x99202, size: 0x8, addend: 0x0, symName: ___swift_memcpy24_8, symObjAddr: 0x9D0, symBinAddr: 0xFBF0, symSize: 0x20 }
- { offsetInCU: 0x12BD, offset: 0x99216, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwta', symObjAddr: 0x9F0, symBinAddr: 0xFC10, symSize: 0x30 }
- { offsetInCU: 0x12D1, offset: 0x9922A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwet', symObjAddr: 0xA20, symBinAddr: 0xFC40, symSize: 0x50 }
- { offsetInCU: 0x12E5, offset: 0x9923E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwst', symObjAddr: 0xA70, symBinAddr: 0xFC90, symSize: 0x40 }
- { offsetInCU: 0x12F9, offset: 0x99252, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVMa', symObjAddr: 0xAB0, symBinAddr: 0xFCD0, symSize: 0xA }
- { offsetInCU: 0x1458, offset: 0x993B1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x670, symBinAddr: 0xF890, symSize: 0x50 }
- { offsetInCU: 0x1496, offset: 0x993EF, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x750, symBinAddr: 0xF970, symSize: 0x80 }
- { offsetInCU: 0x156A, offset: 0x994C3, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZSay14DouShouQiModel4CellVG_Tg5Tf4nnd_n', symObjAddr: 0x7D0, symBinAddr: 0xF9F0, symSize: 0x110 }
- { offsetInCU: 0x27, offset: 0x99713, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9withOwner9andAnimalAcA0G0O_AA0I0OtcfC', symObjAddr: 0x0, symBinAddr: 0xFCE0, symSize: 0x20 }
- { offsetInCU: 0x46, offset: 0x99732, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9withOwner9andAnimalAcA0G0O_AA0I0OtcfC', symObjAddr: 0x0, symBinAddr: 0xFCE0, symSize: 0x20 }
- { offsetInCU: 0x85, offset: 0x99771, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV11descriptionSSvg', symObjAddr: 0x20, symBinAddr: 0xFD00, symSize: 0xC0 }
- { offsetInCU: 0x176, offset: 0x99862, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV5ownerAA5OwnerOvg', symObjAddr: 0xE0, symBinAddr: 0xFDC0, symSize: 0x10 }
- { offsetInCU: 0x194, offset: 0x99880, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV6animalAA6AnimalOvg', symObjAddr: 0xF0, symBinAddr: 0xFDD0, symSize: 0x10 }
- { offsetInCU: 0x1B2, offset: 0x9989E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV4hash4intoys6HasherVz_tF', symObjAddr: 0x100, symBinAddr: 0xFDE0, symSize: 0x40 }
- { offsetInCU: 0x2E8, offset: 0x999D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV2eeoiySbAC_ACtFZ', symObjAddr: 0x140, symBinAddr: 0xFE20, symSize: 0x20 }
- { offsetInCU: 0x330, offset: 0x99A1C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9hashValueSivg', symObjAddr: 0x160, symBinAddr: 0xFE40, symSize: 0x50 }
- { offsetInCU: 0x4C7, offset: 0x99BB3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x1B0, symBinAddr: 0xFE90, symSize: 0x10 }
- { offsetInCU: 0x4F2, offset: 0x99BDE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH9hashValueSivgTW', symObjAddr: 0x1C0, symBinAddr: 0xFEA0, symSize: 0x50 }
- { offsetInCU: 0x6A6, offset: 0x99D92, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x210, symBinAddr: 0xFEF0, symSize: 0x40 }
- { offsetInCU: 0x80B, offset: 0x99EF7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x2A0, symBinAddr: 0xFF80, symSize: 0x20 }
- { offsetInCU: 0x8DD, offset: 0x99FC9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASQWb', symObjAddr: 0x2C0, symBinAddr: 0xFFA0, symSize: 0x10 }
- { offsetInCU: 0x8F1, offset: 0x99FDD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVACSQAAWl', symObjAddr: 0x2D0, symBinAddr: 0xFFB0, symSize: 0x30 }
- { offsetInCU: 0x905, offset: 0x99FF1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVwet', symObjAddr: 0x320, symBinAddr: 0xFFE0, symSize: 0x90 }
- { offsetInCU: 0x919, offset: 0x9A005, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVwst', symObjAddr: 0x3B0, symBinAddr: 0x10070, symSize: 0xE0 }
- { offsetInCU: 0x92D, offset: 0x9A019, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVMa', symObjAddr: 0x490, symBinAddr: 0x10150, symSize: 0xA }
- { offsetInCU: 0x9D2, offset: 0x9A0BE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x250, symBinAddr: 0xFF30, symSize: 0x50 }
- { offsetInCU: 0x27, offset: 0x9A2C6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10160, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x9A2EA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10160, symSize: 0x10 }
- { offsetInCU: 0x6E, offset: 0x9A30D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x50, symBinAddr: 0x101B0, symSize: 0x10 }
- { offsetInCU: 0x9F, offset: 0x9A33E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x60, symBinAddr: 0x101C0, symSize: 0x110 }
- { offsetInCU: 0x15B, offset: 0x9A3FA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwCP', symObjAddr: 0x170, symBinAddr: 0x102D0, symSize: 0x30 }
- { offsetInCU: 0x16F, offset: 0x9A40E, size: 0x8, addend: 0x0, symName: ___swift_memcpy25_8, symObjAddr: 0x1B0, symBinAddr: 0x10300, symSize: 0x20 }
- { offsetInCU: 0x183, offset: 0x9A422, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwet', symObjAddr: 0x1D0, symBinAddr: 0x10320, symSize: 0x50 }
- { offsetInCU: 0x197, offset: 0x9A436, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwst', symObjAddr: 0x220, symBinAddr: 0x10370, symSize: 0x50 }
- { offsetInCU: 0x1AB, offset: 0x9A44A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwug', symObjAddr: 0x270, symBinAddr: 0x103C0, symSize: 0x20 }
- { offsetInCU: 0x1BF, offset: 0x9A45E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwup', symObjAddr: 0x290, symBinAddr: 0x103E0, symSize: 0x10 }
- { offsetInCU: 0x1D3, offset: 0x9A472, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwui', symObjAddr: 0x2A0, symBinAddr: 0x103F0, symSize: 0x20 }
- { offsetInCU: 0x1E7, offset: 0x9A486, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOMa', symObjAddr: 0x2C0, symBinAddr: 0x10410, symSize: 0xA }
- { offsetInCU: 0x20C, offset: 0x9A4AB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP7_domainSSvgTW', symObjAddr: 0x10, symBinAddr: 0x10170, symSize: 0x10 }
- { offsetInCU: 0x228, offset: 0x9A4C7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP5_codeSivgTW', symObjAddr: 0x20, symBinAddr: 0x10180, symSize: 0x10 }
- { offsetInCU: 0x244, offset: 0x9A4E3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP9_userInfoyXlSgvgTW', symObjAddr: 0x30, symBinAddr: 0x10190, symSize: 0x10 }
- { offsetInCU: 0x260, offset: 0x9A4FF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0x40, symBinAddr: 0x101A0, symSize: 0x10 }
- { offsetInCU: 0x27, offset: 0x9A5A5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10420, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x9A5C9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10420, symSize: 0x10 }
- { offsetInCU: 0x7A, offset: 0x9A5F8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO17simpleDescriptionSSvg', symObjAddr: 0x10, symBinAddr: 0x10430, symSize: 0x20 }
- { offsetInCU: 0xA5, offset: 0x9A623, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO4hash4intoys6HasherVz_tF', symObjAddr: 0x30, symBinAddr: 0x10450, symSize: 0x20 }
- { offsetInCU: 0x13B, offset: 0x9A6B9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO9hashValueSivg', symObjAddr: 0x50, symBinAddr: 0x10470, symSize: 0x40 }
- { offsetInCU: 0x236, offset: 0x9A7B4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x90, symBinAddr: 0x104B0, symSize: 0x10 }
- { offsetInCU: 0x28C, offset: 0x9A80A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH9hashValueSivgTW', symObjAddr: 0xA0, symBinAddr: 0x104C0, symSize: 0x40 }
- { offsetInCU: 0x370, offset: 0x9A8EE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x10500, symSize: 0x20 }
- { offsetInCU: 0x3F9, offset: 0x9A977, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASQWb', symObjAddr: 0x140, symBinAddr: 0x10560, symSize: 0x10 }
- { offsetInCU: 0x40D, offset: 0x9A98B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOACSQAAWl', symObjAddr: 0x150, symBinAddr: 0x10570, symSize: 0x30 }
- { offsetInCU: 0x421, offset: 0x9A99F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwet', symObjAddr: 0x1A0, symBinAddr: 0x105A0, symSize: 0x80 }
- { offsetInCU: 0x435, offset: 0x9A9B3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwst', symObjAddr: 0x220, symBinAddr: 0x10620, symSize: 0xD0 }
- { offsetInCU: 0x449, offset: 0x9A9C7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwug', symObjAddr: 0x2F0, symBinAddr: 0x106F0, symSize: 0x10 }
- { offsetInCU: 0x45D, offset: 0x9A9DB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwup', symObjAddr: 0x300, symBinAddr: 0x10700, symSize: 0x10 }
- { offsetInCU: 0x471, offset: 0x9A9EF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwui', symObjAddr: 0x310, symBinAddr: 0x10710, symSize: 0x10 }
- { offsetInCU: 0x485, offset: 0x9AA03, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOMa', symObjAddr: 0x320, symBinAddr: 0x10720, symSize: 0xA }
- { offsetInCU: 0x4DE, offset: 0x9AA5C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x100, symBinAddr: 0x10520, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x9AB88, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0x10730, symSize: 0x70 }
- { offsetInCU: 0xD3, offset: 0x9AC34, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0x10730, symSize: 0x70 }
- { offsetInCU: 0x145, offset: 0x9ACA6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCfd', symObjAddr: 0x70, symBinAddr: 0x107A0, symSize: 0x20 }
- { offsetInCU: 0x1AA, offset: 0x9AD0B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x90, symBinAddr: 0x107C0, symSize: 0x90 }
- { offsetInCU: 0x248, offset: 0x9ADA9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCfD', symObjAddr: 0x120, symBinAddr: 0x10850, symSize: 0x30 }
- { offsetInCU: 0x2A2, offset: 0x9AE03, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCMa', symObjAddr: 0x150, symBinAddr: 0x10880, symSize: 0x14 }
- { offsetInCU: 0x27, offset: 0x9AED1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x108A0, symSize: 0x10 }
- { offsetInCU: 0x46, offset: 0x9AEF0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x108A0, symSize: 0x10 }
- { offsetInCU: 0x5A, offset: 0x9AF04, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2of7fromRow13andFromColumn02toH00i2ToK0AcA5OwnerO_S4itcfC', symObjAddr: 0x10, symBinAddr: 0x108B0, symSize: 0x20 }
- { offsetInCU: 0xC1, offset: 0x9AF6B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV5ownerAA5OwnerOvg', symObjAddr: 0x30, symBinAddr: 0x108D0, symSize: 0x10 }
- { offsetInCU: 0xDF, offset: 0x9AF89, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV9rowOriginSivg', symObjAddr: 0x40, symBinAddr: 0x108E0, symSize: 0x10 }
- { offsetInCU: 0xFD, offset: 0x9AFA7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV12columnOriginSivg', symObjAddr: 0x50, symBinAddr: 0x108F0, symSize: 0x10 }
- { offsetInCU: 0x11B, offset: 0x9AFC5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV14rowDestinationSivg', symObjAddr: 0x60, symBinAddr: 0x10900, symSize: 0x10 }
- { offsetInCU: 0x139, offset: 0x9AFE3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV17columnDestinationSivg', symObjAddr: 0x70, symBinAddr: 0x10910, symSize: 0x10 }
- { offsetInCU: 0x157, offset: 0x9B001, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV11descriptionSSvg', symObjAddr: 0x80, symBinAddr: 0x10920, symSize: 0x1E0 }
- { offsetInCU: 0x287, offset: 0x9B131, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x260, symBinAddr: 0x10B00, symSize: 0x10 }
- { offsetInCU: 0x2B2, offset: 0x9B15C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x270, symBinAddr: 0x10B10, symSize: 0x10 }
- { offsetInCU: 0x2E3, offset: 0x9B18D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x280, symBinAddr: 0x10B20, symSize: 0x40 }
- { offsetInCU: 0x365, offset: 0x9B20F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwCP', symObjAddr: 0x2C0, symBinAddr: 0x10B60, symSize: 0x30 }
- { offsetInCU: 0x379, offset: 0x9B223, size: 0x8, addend: 0x0, symName: ___swift_memcpy40_8, symObjAddr: 0x300, symBinAddr: 0x10B90, symSize: 0x20 }
- { offsetInCU: 0x38D, offset: 0x9B237, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwet', symObjAddr: 0x320, symBinAddr: 0x10BB0, symSize: 0x40 }
- { offsetInCU: 0x3A1, offset: 0x9B24B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwst', symObjAddr: 0x360, symBinAddr: 0x10BF0, symSize: 0x50 }
- { offsetInCU: 0x3B5, offset: 0x9B25F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVMa', symObjAddr: 0x3B0, symBinAddr: 0x10C40, symSize: 0xA }
- { offsetInCU: 0x27, offset: 0x9B352, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueSivg', symObjAddr: 0x0, symBinAddr: 0x10C50, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x9B376, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueSivg', symObjAddr: 0x0, symBinAddr: 0x10C50, symSize: 0x10 }
- { offsetInCU: 0x66, offset: 0x9B391, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueACSgSi_tcfC', symObjAddr: 0x10, symBinAddr: 0x10C60, symSize: 0x20 }
- { offsetInCU: 0xBA, offset: 0x9B3E5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x130, symBinAddr: 0x10D80, symSize: 0x10 }
- { offsetInCU: 0xD6, offset: 0x9B401, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x140, symBinAddr: 0x10D90, symSize: 0x20 }
- { offsetInCU: 0x10B, offset: 0x9B436, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASQWb', symObjAddr: 0x40, symBinAddr: 0x10C90, symSize: 0x10 }
- { offsetInCU: 0x11F, offset: 0x9B44A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOACSQAAWl', symObjAddr: 0x50, symBinAddr: 0x10CA0, symSize: 0x30 }
- { offsetInCU: 0x149, offset: 0x9B474, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwet', symObjAddr: 0x180, symBinAddr: 0x10DB0, symSize: 0x80 }
- { offsetInCU: 0x15D, offset: 0x9B488, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwst', symObjAddr: 0x200, symBinAddr: 0x10E30, symSize: 0xD0 }
- { offsetInCU: 0x171, offset: 0x9B49C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwug', symObjAddr: 0x2D0, symBinAddr: 0x10F00, symSize: 0x10 }
- { offsetInCU: 0x185, offset: 0x9B4B0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwup', symObjAddr: 0x2E0, symBinAddr: 0x10F10, symSize: 0x10 }
- { offsetInCU: 0x199, offset: 0x9B4C4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwui', symObjAddr: 0x2F0, symBinAddr: 0x10F20, symSize: 0x10 }
- { offsetInCU: 0x1AD, offset: 0x9B4D8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOMa', symObjAddr: 0x300, symBinAddr: 0x10F30, symSize: 0xA }
- { offsetInCU: 0x1E8, offset: 0x9B513, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x30, symBinAddr: 0x10C80, symSize: 0x10 }
- { offsetInCU: 0x279, offset: 0x9B5A4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH9hashValueSivgTW', symObjAddr: 0x80, symBinAddr: 0x10CD0, symSize: 0x40 }
- { offsetInCU: 0x351, offset: 0x9B67C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xC0, symBinAddr: 0x10D10, symSize: 0x30 }
- { offsetInCU: 0x3CD, offset: 0x9B6F8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xF0, symBinAddr: 0x10D40, symSize: 0x40 }
- { offsetInCU: 0x97, offset: 0x9B898, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvg', symObjAddr: 0xA0, symBinAddr: 0x10FE0, symSize: 0x40 }
- { offsetInCU: 0xDE, offset: 0x9B8DF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5rulesAA5Rules_pvg', symObjAddr: 0x140, symBinAddr: 0x11080, symSize: 0x40 }
- { offsetInCU: 0xFB, offset: 0x9B8FC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC7playersSDyAA5OwnerOAA6PlayerCGvg', symObjAddr: 0x1B0, symBinAddr: 0x110F0, symSize: 0x10 }
- { offsetInCU: 0x128, offset: 0x9B929, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfC', symObjAddr: 0x1C0, symBinAddr: 0x11100, symSize: 0x60 }
- { offsetInCU: 0x14D, offset: 0x9B94E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfc', symObjAddr: 0x220, symBinAddr: 0x11160, symSize: 0x4F0 }
- { offsetInCU: 0x563, offset: 0x9BD64, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_', symObjAddr: 0x800, symBinAddr: 0x116A0, symSize: 0xB0 }
- { offsetInCU: 0x612, offset: 0x9BE13, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TQ0_', symObjAddr: 0x8B0, symBinAddr: 0x11750, symSize: 0x70 }
- { offsetInCU: 0x6A3, offset: 0x9BEA4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TY2_', symObjAddr: 0x920, symBinAddr: 0x117C0, symSize: 0x50 }
- { offsetInCU: 0x6E8, offset: 0x9BEE9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_', symObjAddr: 0x970, symBinAddr: 0x11810, symSize: 0xB0 }
- { offsetInCU: 0x797, offset: 0x9BF98, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TQ0_', symObjAddr: 0xA20, symBinAddr: 0x118C0, symSize: 0x70 }
- { offsetInCU: 0x828, offset: 0x9C029, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TY1_', symObjAddr: 0xA90, symBinAddr: 0x11930, symSize: 0x30 }
- { offsetInCU: 0x882, offset: 0x9C083, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TY2_', symObjAddr: 0xAC0, symBinAddr: 0x11960, symSize: 0x50 }
- { offsetInCU: 0x8C7, offset: 0x9C0C8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withBoard8andRules0H7Player10H7Player2AcA0G0V_AA0I0_pAA6PlayerCALtKcfC', symObjAddr: 0xB10, symBinAddr: 0x119B0, symSize: 0x60 }
- { offsetInCU: 0x8EC, offset: 0x9C0ED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withBoard8andRules0H7Player10H7Player2AcA0G0V_AA0I0_pAA6PlayerCALtKcfc', symObjAddr: 0xB70, symBinAddr: 0x11A10, symSize: 0x320 }
- { offsetInCU: 0xA27, offset: 0x9C228, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE15StartedListeneryyyAA5BoardVcF', symObjAddr: 0xE90, symBinAddr: 0x11D30, symSize: 0xD0 }
- { offsetInCU: 0xB3B, offset: 0x9C33C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC25addPlayerNotifiedListeneryyyAA5BoardV_AA0G0CtYaKcF', symObjAddr: 0xF60, symBinAddr: 0x11E00, symSize: 0xD0 }
- { offsetInCU: 0xC4F, offset: 0x9C450, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE15ChangedListeneryyyACYacF', symObjAddr: 0x10F0, symBinAddr: 0x11F90, symSize: 0xD0 }
- { offsetInCU: 0xD63, offset: 0x9C564, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE12OverListeneryyyAA5BoardV_AA6ResultOAA6PlayerCSgtcF', symObjAddr: 0x1220, symBinAddr: 0x120C0, symSize: 0xD0 }
- { offsetInCU: 0xE77, offset: 0x9C678, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC30addMoveChosenCallbacksListeneryyyAA5BoardV_AA0G0VAA6PlayerCtcF', symObjAddr: 0x12F0, symBinAddr: 0x12190, symSize: 0xD0 }
- { offsetInCU: 0xF8B, offset: 0x9C78C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC31addInvalidMoveCallbacksListeneryyyAA5BoardV_AA0H0VAA6PlayerCSbtcF', symObjAddr: 0x13C0, symBinAddr: 0x12260, symSize: 0xE0 }
- { offsetInCU: 0x109F, offset: 0x9C8A0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC23addBoardChangedListeneryyyAA0G0VcF', symObjAddr: 0x14A0, symBinAddr: 0x12340, symSize: 0xE0 }
- { offsetInCU: 0x11B3, offset: 0x9C9B4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC23addPieceRemovedListeneryyySi_SiAA0G0VtcF', symObjAddr: 0x1580, symBinAddr: 0x12420, symSize: 0xE0 }
- { offsetInCU: 0x12E5, offset: 0x9CAE6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC18notifyPieceRemoved33_4E9958627B7DCD90B6D32369387417C3LLyySi_SiAA0G0VtF', symObjAddr: 0x1660, symBinAddr: 0x12500, symSize: 0xC0 }
- { offsetInCU: 0x1497, offset: 0x9CC98, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKF', symObjAddr: 0x1720, symBinAddr: 0x125C0, symSize: 0x60 }
- { offsetInCU: 0x1876, offset: 0x9D077, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY0_', symObjAddr: 0x1780, symBinAddr: 0x12620, symSize: 0xD90 }
- { offsetInCU: 0x25A8, offset: 0x9DDA9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTQ1_', symObjAddr: 0x2510, symBinAddr: 0x133B0, symSize: 0x70 }
- { offsetInCU: 0x26D3, offset: 0x9DED4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY2_', symObjAddr: 0x2580, symBinAddr: 0x13420, symSize: 0x280 }
- { offsetInCU: 0x29BD, offset: 0x9E1BE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTQ3_', symObjAddr: 0x2800, symBinAddr: 0x136A0, symSize: 0x80 }
- { offsetInCU: 0x2AAE, offset: 0x9E2AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY4_', symObjAddr: 0x2880, symBinAddr: 0x13720, symSize: 0x150 }
- { offsetInCU: 0x2BE9, offset: 0x9E3EA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY5_', symObjAddr: 0x29D0, symBinAddr: 0x13870, symSize: 0x70 }
- { offsetInCU: 0x2C97, offset: 0x9E498, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC6isOverSbvg', symObjAddr: 0x2A40, symBinAddr: 0x138E0, symSize: 0x30 }
- { offsetInCU: 0x2CB4, offset: 0x9E4B5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKF', symObjAddr: 0x2A70, symBinAddr: 0x13910, symSize: 0x30 }
- { offsetInCU: 0x2D65, offset: 0x9E566, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY0_', symObjAddr: 0x2AA0, symBinAddr: 0x13940, symSize: 0x3D0 }
- { offsetInCU: 0x3221, offset: 0x9EA22, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTQ1_', symObjAddr: 0x2E70, symBinAddr: 0x13D10, symSize: 0x70 }
- { offsetInCU: 0x32B5, offset: 0x9EAB6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY2_', symObjAddr: 0x2EE0, symBinAddr: 0x13D80, symSize: 0x270 }
- { offsetInCU: 0x350A, offset: 0x9ED0B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTQ3_', symObjAddr: 0x3150, symBinAddr: 0x13FF0, symSize: 0x80 }
- { offsetInCU: 0x35AB, offset: 0x9EDAC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY4_', symObjAddr: 0x31D0, symBinAddr: 0x14070, symSize: 0x140 }
- { offsetInCU: 0x3697, offset: 0x9EE98, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY5_', symObjAddr: 0x3310, symBinAddr: 0x141B0, symSize: 0x70 }
- { offsetInCU: 0x36E6, offset: 0x9EEE7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCfd', symObjAddr: 0x3380, symBinAddr: 0x14220, symSize: 0x80 }
- { offsetInCU: 0x3713, offset: 0x9EF14, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCfD', symObjAddr: 0x3400, symBinAddr: 0x142A0, symSize: 0x20 }
- { offsetInCU: 0x3741, offset: 0x9EF42, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvpACTK', symObjAddr: 0x0, symBinAddr: 0x10F40, symSize: 0x40 }
- { offsetInCU: 0x3777, offset: 0x9EF78, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvpACTk', symObjAddr: 0x40, symBinAddr: 0x10F80, symSize: 0x60 }
- { offsetInCU: 0x37AF, offset: 0x9EFB0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5rulesAA5Rules_pvpACTk', symObjAddr: 0xE0, symBinAddr: 0x11020, symSize: 0x60 }
- { offsetInCU: 0x37F2, offset: 0x9EFF3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5Rules_pWOc', symObjAddr: 0x180, symBinAddr: 0x110C0, symSize: 0x30 }
- { offsetInCU: 0x3929, offset: 0x9F12A, size: 0x8, addend: 0x0, symName: ___swift_destroy_boxed_opaque_existential_1, symObjAddr: 0x770, symBinAddr: 0x11650, symSize: 0x30 }
- { offsetInCU: 0x393D, offset: 0x9F13E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCMa', symObjAddr: 0x7A0, symBinAddr: 0x11680, symSize: 0x20 }
- { offsetInCU: 0x3A4F, offset: 0x9F250, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TR', symObjAddr: 0x1030, symBinAddr: 0x11ED0, symSize: 0x70 }
- { offsetInCU: 0x3A89, offset: 0x9F28A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TRTQ0_', symObjAddr: 0x10A0, symBinAddr: 0x11F40, symSize: 0x50 }
- { offsetInCU: 0x3B46, offset: 0x9F347, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TR', symObjAddr: 0x11C0, symBinAddr: 0x12060, symSize: 0x60 }
- { offsetInCU: 0x3F7D, offset: 0x9F77E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TA', symObjAddr: 0x3420, symBinAddr: 0x142C0, symSize: 0x60 }
- { offsetInCU: 0x3FAD, offset: 0x9F7AE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA', symObjAddr: 0x34A0, symBinAddr: 0x14340, symSize: 0x90 }
- { offsetInCU: 0x3FDD, offset: 0x9F7DE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TA', symObjAddr: 0x3530, symBinAddr: 0x143D0, symSize: 0x60 }
- { offsetInCU: 0x400D, offset: 0x9F80E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA.7', symObjAddr: 0x3590, symBinAddr: 0x14430, symSize: 0x90 }
- { offsetInCU: 0x4041, offset: 0x9F842, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVIegn_ACytIegnr_TRTA', symObjAddr: 0x3620, symBinAddr: 0x144C0, symSize: 0x20 }
- { offsetInCU: 0x4071, offset: 0x9F872, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TRTA', symObjAddr: 0x3640, symBinAddr: 0x144E0, symSize: 0x90 }
- { offsetInCU: 0x40A1, offset: 0x9F8A2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TRTA', symObjAddr: 0x36D0, symBinAddr: 0x14570, symSize: 0x80 }
- { offsetInCU: 0x40D1, offset: 0x9F8D2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TRTATQ0_', symObjAddr: 0x3750, symBinAddr: 0x145F0, symSize: 0x50 }
- { offsetInCU: 0x4125, offset: 0x9F926, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6ResultOAA6PlayerCSgIegnng_AceHytIegnnnr_TRTA', symObjAddr: 0x37A0, symBinAddr: 0x14640, symSize: 0x20 }
- { offsetInCU: 0x4159, offset: 0x9F95A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA4MoveVAA6PlayerCIegnng_AceGytIegnnnr_TRTA', symObjAddr: 0x37C0, symBinAddr: 0x14660, symSize: 0x20 }
- { offsetInCU: 0x418D, offset: 0x9F98E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA4MoveVAA6PlayerCSbIegnngy_AceGSbytIegnnnnr_TRTA', symObjAddr: 0x37E0, symBinAddr: 0x14680, symSize: 0x20 }
- { offsetInCU: 0x41C1, offset: 0x9F9C2, size: 0x8, addend: 0x0, symName: '_$sS2i14DouShouQiModel5PieceVIegyyn_S2iACytIegnnnr_TRTA', symObjAddr: 0x3800, symBinAddr: 0x146A0, symSize: 0x20 }
- { offsetInCU: 0x41EA, offset: 0x9F9EB, size: 0x8, addend: 0x0, symName: ___swift_mutable_project_boxed_opaque_existential_1, symObjAddr: 0x3820, symBinAddr: 0x146C0, symSize: 0x30 }
- { offsetInCU: 0x41FE, offset: 0x9F9FF, size: 0x8, addend: 0x0, symName: ___swift_assign_boxed_opaque_existential_1, symObjAddr: 0x3BF0, symBinAddr: 0x14A90, symSize: 0x130 }
...

Binary file not shown.

Before

Width:  |  Height:  |  Size: 586 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 302 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 366 KiB

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 368 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 327 KiB

After

Width:  |  Height:  |  Size: 92 KiB

@ -8,6 +8,7 @@
/* Begin PBXBuildFile section */
6437FF132C25846F009D0EAF /* PlayingGameVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6437FF122C25846F009D0EAF /* PlayingGameVM.swift */; };
6437FF142C25870C009D0EAF /* DSQ.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC62C5322C1C188F0048CD0B /* DSQ.xcframework */; };
6458345C2BF5F92300E18321 /* DouShouQi_AppApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6458345B2BF5F92300E18321 /* DouShouQi_AppApp.swift */; };
6458345E2BF5F92300E18321 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6458345D2BF5F92300E18321 /* ContentView.swift */; };
645834602BF5F92500E18321 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6458345F2BF5F92500E18321 /* Assets.xcassets */; };
@ -66,29 +67,6 @@
ECB636512C046379007CD5E2 /* MusicPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECB636502C046379007CD5E2 /* MusicPlayer.swift */; };
ECB636532C0463A9007CD5E2 /* SoundPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECB636522C0463A9007CD5E2 /* SoundPlayer.swift */; };
ECB636552C047992007CD5E2 /* Image.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = ECB636542C047992007CD5E2 /* Image.xcassets */; };
ECCBA6B82C29BE1900D6D9FB /* ARKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECCBA6B72C29BE1900D6D9FB /* ARKit.framework */; };
ECCBA6BA2C29BE2800D6D9FB /* RealityKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECCBA6B92C29BE2800D6D9FB /* RealityKit.framework */; };
ECCBA6BD2C29BFF600D6D9FB /* ARBoard.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECCBA6BC2C29BFF600D6D9FB /* ARBoard.swift */; };
ECCBA6C32C29C25000D6D9FB /* ARKitUIViewRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECCBA6C22C29C25000D6D9FB /* ARKitUIViewRepresentable.swift */; };
ECCBA6C52C29C2F500D6D9FB /* ARKitView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECCBA6C42C29C2F500D6D9FB /* ARKitView.swift */; };
ECE777142C2068F400D354B0 /* EditPlayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECE777132C2068F400D354B0 /* EditPlayerView.swift */; };
ECF3FD312C2722C600F5E62B /* CDHistoriqueExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF3FD302C2722C600F5E62B /* CDHistoriqueExtension.swift */; };
ECF3FD332C27238F00F5E62B /* Historique.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF3FD322C27238F00F5E62B /* Historique.swift */; };
ECF3FD3A2C29A20D00F5E62B /* HistoricListVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF3FD392C29A20D00F5E62B /* HistoricListVM.swift */; };
ECF3FD3D2C29B64100F5E62B /* ChronoVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF3FD3C2C29B64100F5E62B /* ChronoVM.swift */; };
ECF9AD352C29D46A00238A06 /* Start.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD322C29D46A00238A06 /* Start.mp3 */; };
ECF9AD362C29D46A00238A06 /* Fight.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD332C29D46A00238A06 /* Fight.mp3 */; };
ECF9AD372C29D46A00238A06 /* SelectFighterSound.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD342C29D46A00238A06 /* SelectFighterSound.mp3 */; };
ECF9AD562C2A02BC00238A06 /* cat.usdz in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD4D2C2A02BC00238A06 /* cat.usdz */; };
ECF9AD572C2A02BC00238A06 /* dog.usdz in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD4E2C2A02BC00238A06 /* dog.usdz */; };
ECF9AD582C2A02BC00238A06 /* tiger.usdz in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD4F2C2A02BC00238A06 /* tiger.usdz */; };
ECF9AD592C2A02BC00238A06 /* wolf.usdz in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD502C2A02BC00238A06 /* wolf.usdz */; };
ECF9AD5A2C2A02BC00238A06 /* board.usdz in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD512C2A02BC00238A06 /* board.usdz */; };
ECF9AD5B2C2A02BC00238A06 /* elephant.usdz in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD522C2A02BC00238A06 /* elephant.usdz */; };
ECF9AD5C2C2A02BC00238A06 /* leopard.usdz in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD532C2A02BC00238A06 /* leopard.usdz */; };
ECF9AD5D2C2A02BC00238A06 /* lion.usdz in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD542C2A02BC00238A06 /* lion.usdz */; };
ECF9AD5E2C2A02BC00238A06 /* rat.usdz in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD552C2A02BC00238A06 /* rat.usdz */; };
ECF9AD642C2EE9BC00238A06 /* DSQ.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECF9AD632C2EE9BC00238A06 /* DSQ.xcframework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@ -164,6 +142,7 @@
EC62C5242C0F68830048CD0B /* PlayerVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerVM.swift; sourceTree = "<group>"; };
EC62C5282C1974000048CD0B /* PlayersVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayersVM.swift; sourceTree = "<group>"; };
EC62C52C2C197ED10048CD0B /* Player.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Player.swift; sourceTree = "<group>"; };
EC62C5322C1C188F0048CD0B /* DSQ.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = DSQ.xcframework; path = ../../SwiftUI_ARKit_2024/XCFramework/DSQ.xcframework; sourceTree = "<group>"; };
EC62C5372C1C64EE0048CD0B /* CoreManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreManager.swift; sourceTree = "<group>"; };
EC62C53C2C1C69200048CD0B /* DouShouQi_App.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = DouShouQi_App.xcdatamodel; sourceTree = "<group>"; };
EC62C53E2C1C6D1A0048CD0B /* CDPlayerExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CDPlayerExtension.swift; sourceTree = "<group>"; };
@ -172,29 +151,6 @@
ECB636502C046379007CD5E2 /* MusicPlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MusicPlayer.swift; sourceTree = "<group>"; };
ECB636522C0463A9007CD5E2 /* SoundPlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoundPlayer.swift; sourceTree = "<group>"; };
ECB636542C047992007CD5E2 /* Image.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Image.xcassets; sourceTree = "<group>"; };
ECCBA6B72C29BE1900D6D9FB /* ARKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ARKit.framework; path = System/Library/Frameworks/ARKit.framework; sourceTree = SDKROOT; };
ECCBA6B92C29BE2800D6D9FB /* RealityKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RealityKit.framework; path = System/Library/Frameworks/RealityKit.framework; sourceTree = SDKROOT; };
ECCBA6BC2C29BFF600D6D9FB /* ARBoard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ARBoard.swift; sourceTree = "<group>"; };
ECCBA6C22C29C25000D6D9FB /* ARKitUIViewRepresentable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ARKitUIViewRepresentable.swift; sourceTree = "<group>"; };
ECCBA6C42C29C2F500D6D9FB /* ARKitView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ARKitView.swift; sourceTree = "<group>"; };
ECE777132C2068F400D354B0 /* EditPlayerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditPlayerView.swift; sourceTree = "<group>"; };
ECF3FD302C2722C600F5E62B /* CDHistoriqueExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CDHistoriqueExtension.swift; sourceTree = "<group>"; };
ECF3FD322C27238F00F5E62B /* Historique.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Historique.swift; sourceTree = "<group>"; };
ECF3FD392C29A20D00F5E62B /* HistoricListVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HistoricListVM.swift; sourceTree = "<group>"; };
ECF3FD3C2C29B64100F5E62B /* ChronoVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChronoVM.swift; sourceTree = "<group>"; };
ECF9AD322C29D46A00238A06 /* Start.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = Start.mp3; sourceTree = "<group>"; };
ECF9AD332C29D46A00238A06 /* Fight.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = Fight.mp3; sourceTree = "<group>"; };
ECF9AD342C29D46A00238A06 /* SelectFighterSound.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = SelectFighterSound.mp3; sourceTree = "<group>"; };
ECF9AD4D2C2A02BC00238A06 /* cat.usdz */ = {isa = PBXFileReference; lastKnownFileType = file.usdz; path = cat.usdz; sourceTree = "<group>"; };
ECF9AD4E2C2A02BC00238A06 /* dog.usdz */ = {isa = PBXFileReference; lastKnownFileType = file.usdz; path = dog.usdz; sourceTree = "<group>"; };
ECF9AD4F2C2A02BC00238A06 /* tiger.usdz */ = {isa = PBXFileReference; lastKnownFileType = file.usdz; path = tiger.usdz; sourceTree = "<group>"; };
ECF9AD502C2A02BC00238A06 /* wolf.usdz */ = {isa = PBXFileReference; lastKnownFileType = file.usdz; path = wolf.usdz; sourceTree = "<group>"; };
ECF9AD512C2A02BC00238A06 /* board.usdz */ = {isa = PBXFileReference; lastKnownFileType = file.usdz; path = board.usdz; sourceTree = "<group>"; };
ECF9AD522C2A02BC00238A06 /* elephant.usdz */ = {isa = PBXFileReference; lastKnownFileType = file.usdz; path = elephant.usdz; sourceTree = "<group>"; };
ECF9AD532C2A02BC00238A06 /* leopard.usdz */ = {isa = PBXFileReference; lastKnownFileType = file.usdz; path = leopard.usdz; sourceTree = "<group>"; };
ECF9AD542C2A02BC00238A06 /* lion.usdz */ = {isa = PBXFileReference; lastKnownFileType = file.usdz; path = lion.usdz; sourceTree = "<group>"; };
ECF9AD552C2A02BC00238A06 /* rat.usdz */ = {isa = PBXFileReference; lastKnownFileType = file.usdz; path = rat.usdz; sourceTree = "<group>"; };
ECF9AD632C2EE9BC00238A06 /* DSQ.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = DSQ.xcframework; path = ../Dependencies/DSQ.xcframework; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -202,9 +158,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
ECCBA6BA2C29BE2800D6D9FB /* RealityKit.framework in Frameworks */,
ECCBA6B82C29BE1900D6D9FB /* ARKit.framework in Frameworks */,
ECF9AD642C2EE9BC00238A06 /* DSQ.xcframework in Frameworks */,
6437FF142C25870C009D0EAF /* DSQ.xcframework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -252,7 +206,6 @@
6458345A2BF5F92300E18321 /* DouShouQi_App */ = {
isa = PBXGroup;
children = (
ECCBA6BB2C29BE3C00D6D9FB /* ARViews */,
646F04BF2C0F5BD1003C8600 /* AppModelAndExtension */,
646FA83C2C072284001466BA /* ViewModel */,
ECB6364F2C04635D007CD5E2 /* SoundPlayerClass */,
@ -314,7 +267,6 @@
64FC4D682C09C78000D08B8B /* SelectPlayerView.swift */,
645B4C242BFCD3C600FD658A /* ScoreBoardView.swift */,
EC62C4FA2C038BD20048CD0B /* PlayersView.swift */,
ECE777132C2068F400D354B0 /* EditPlayerView.swift */,
);
path = Player;
sourceTree = "<group>";
@ -343,7 +295,6 @@
EC62C5262C11E24B0048CD0B /* Players */,
646F04BC2C0F5491003C8600 /* Settings */,
646FA83F2C0730B4001466BA /* Game */,
ECF3FD3C2C29B64100F5E62B /* ChronoVM.swift */,
);
path = ViewModel;
sourceTree = "<group>";
@ -351,8 +302,8 @@
646FA83F2C0730B4001466BA /* Game */ = {
isa = PBXGroup;
children = (
ECF3FD3B2C29A21200F5E62B /* Historic */,
646FA83D2C072340001466BA /* GameVM.swift */,
646FA8422C0730D6001466BA /* HistoricVM.swift */,
6437FF122C25846F009D0EAF /* PlayingGameVM.swift */,
);
path = Game;
@ -396,7 +347,6 @@
649B59A52BF64B1B002BAE38 /* Assets */ = {
isa = PBXGroup;
children = (
ECF9AD3A2C2A025500238A06 /* AssetARkit */,
EC62C5042C045BE00048CD0B /* Musics */,
EC62C5032C045BD30048CD0B /* Sounds */,
649B59B02BF65360002BAE38 /* TextStyles */,
@ -439,9 +389,7 @@
64C87E222C09D52600CCD451 /* Frameworks */ = {
isa = PBXGroup;
children = (
ECF9AD632C2EE9BC00238A06 /* DSQ.xcframework */,
ECCBA6B92C29BE2800D6D9FB /* RealityKit.framework */,
ECCBA6B72C29BE1900D6D9FB /* ARKit.framework */,
EC62C5322C1C188F0048CD0B /* DSQ.xcframework */,
);
name = Frameworks;
sourceTree = "<group>";
@ -466,9 +414,6 @@
EC62C5032C045BD30048CD0B /* Sounds */ = {
isa = PBXGroup;
children = (
ECF9AD332C29D46A00238A06 /* Fight.mp3 */,
ECF9AD342C29D46A00238A06 /* SelectFighterSound.mp3 */,
ECF9AD322C29D46A00238A06 /* Start.mp3 */,
EC62C50C2C046D9E0048CD0B /* SplashScreenSound.mp3 */,
EC62C5052C045C1A0048CD0B /* TitleScreenButtonSound.mp3 */,
);
@ -489,7 +434,6 @@
isa = PBXGroup;
children = (
EC62C53E2C1C6D1A0048CD0B /* CDPlayerExtension.swift */,
ECF3FD302C2722C600F5E62B /* CDHistoriqueExtension.swift */,
64D2D74D2C25D380009BD010 /* Animals.Symbols.swift */,
);
path = Extensions;
@ -510,7 +454,6 @@
children = (
ECE7770E2C1C6FB200D354B0 /* CoreData */,
EC62C52C2C197ED10048CD0B /* Player.swift */,
ECF3FD322C27238F00F5E62B /* Historique.swift */,
);
path = Class;
sourceTree = "<group>";
@ -524,16 +467,6 @@
path = SoundPlayerClass;
sourceTree = "<group>";
};
ECCBA6BB2C29BE3C00D6D9FB /* ARViews */ = {
isa = PBXGroup;
children = (
ECCBA6BC2C29BFF600D6D9FB /* ARBoard.swift */,
ECCBA6C22C29C25000D6D9FB /* ARKitUIViewRepresentable.swift */,
ECCBA6C42C29C2F500D6D9FB /* ARKitView.swift */,
);
path = ARViews;
sourceTree = "<group>";
};
ECE7770E2C1C6FB200D354B0 /* CoreData */ = {
isa = PBXGroup;
children = (
@ -542,31 +475,6 @@
path = CoreData;
sourceTree = "<group>";
};
ECF3FD3B2C29A21200F5E62B /* Historic */ = {
isa = PBXGroup;
children = (
646FA8422C0730D6001466BA /* HistoricVM.swift */,
ECF3FD392C29A20D00F5E62B /* HistoricListVM.swift */,
);
path = Historic;
sourceTree = "<group>";
};
ECF9AD3A2C2A025500238A06 /* AssetARkit */ = {
isa = PBXGroup;
children = (
ECF9AD512C2A02BC00238A06 /* board.usdz */,
ECF9AD4D2C2A02BC00238A06 /* cat.usdz */,
ECF9AD4E2C2A02BC00238A06 /* dog.usdz */,
ECF9AD522C2A02BC00238A06 /* elephant.usdz */,
ECF9AD532C2A02BC00238A06 /* leopard.usdz */,
ECF9AD542C2A02BC00238A06 /* lion.usdz */,
ECF9AD552C2A02BC00238A06 /* rat.usdz */,
ECF9AD4F2C2A02BC00238A06 /* tiger.usdz */,
ECF9AD502C2A02BC00238A06 /* wolf.usdz */,
);
path = AssetARkit;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@ -671,26 +579,14 @@
files = (
EC0540CA2C08BD8D0032E9EF /* GameMusic.mp3 in Resources */,
649B59A72BF64BA9002BAE38 /* Colors.xcassets in Resources */,
ECF9AD592C2A02BC00238A06 /* wolf.usdz in Resources */,
6493C1C02C046BF900B5121D /* samurai.ttf in Resources */,
EC62C5062C045C1A0048CD0B /* TitleScreenButtonSound.mp3 in Resources */,
ECF9AD352C29D46A00238A06 /* Start.mp3 in Resources */,
ECF9AD5A2C2A02BC00238A06 /* board.usdz in Resources */,
ECF9AD372C29D46A00238A06 /* SelectFighterSound.mp3 in Resources */,
EC62C5172C0620C00048CD0B /* rap.mp3 in Resources */,
EC62C50D2C046D9E0048CD0B /* SplashScreenSound.mp3 in Resources */,
ECF9AD362C29D46A00238A06 /* Fight.mp3 in Resources */,
ECF9AD582C2A02BC00238A06 /* tiger.usdz in Resources */,
645834632BF5F92500E18321 /* Preview Assets.xcassets in Resources */,
ECF9AD5B2C2A02BC00238A06 /* elephant.usdz in Resources */,
ECF9AD562C2A02BC00238A06 /* cat.usdz in Resources */,
ECF9AD5C2C2A02BC00238A06 /* leopard.usdz in Resources */,
645834602BF5F92500E18321 /* Assets.xcassets in Resources */,
ECB636552C047992007CD5E2 /* Image.xcassets in Resources */,
EC62C4FF2C0457AD0048CD0B /* TitleScreenMusic.mp3 in Resources */,
ECF9AD572C2A02BC00238A06 /* dog.usdz in Resources */,
ECF9AD5D2C2A02BC00238A06 /* lion.usdz in Resources */,
ECF9AD5E2C2A02BC00238A06 /* rat.usdz in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -720,7 +616,6 @@
649B59A92BF64C6A002BAE38 /* Colors.swift in Sources */,
646FA8432C0730D6001466BA /* HistoricVM.swift in Sources */,
EC3EE4B12C0CD46000710153 /* ButtonView.swift in Sources */,
ECCBA6C52C29C2F500D6D9FB /* ARKitView.swift in Sources */,
649B59B42BF653E1002BAE38 /* ViewTitleTextStyle.swift in Sources */,
649B59AE2BF64EAB002BAE38 /* AppImages.swift in Sources */,
ECB636532C0463A9007CD5E2 /* SoundPlayer.swift in Sources */,
@ -731,14 +626,11 @@
EC05BFCB2C05F470000F7B19 /* GameScene.swift in Sources */,
64D2D74E2C25D380009BD010 /* Animals.Symbols.swift in Sources */,
6458345C2BF5F92300E18321 /* DouShouQi_AppApp.swift in Sources */,
ECCBA6BD2C29BFF600D6D9FB /* ARBoard.swift in Sources */,
ECB636512C046379007CD5E2 /* MusicPlayer.swift in Sources */,
ECB6364E2C04628E007CD5E2 /* SpriteMeeple.swift in Sources */,
649B59A42BF64574002BAE38 /* TitlePageFrame.swift in Sources */,
EC0540C42C08A13E0032E9EF /* GameView.swift in Sources */,
EC05BFC42C04C3C4000F7B19 /* SettingsView.swift in Sources */,
ECF3FD312C2722C600F5E62B /* CDHistoriqueExtension.swift in Sources */,
ECF3FD3D2C29B64100F5E62B /* ChronoVM.swift in Sources */,
EC62C53D2C1C69200048CD0B /* DouShouQi_App.xcdatamodeld in Sources */,
EC62C50F2C05D06A0048CD0B /* AddPlayerView.swift in Sources */,
EC62C53F2C1C6D1A0048CD0B /* CDPlayerExtension.swift in Sources */,
@ -748,10 +640,8 @@
64D992722C06281B002ACBC6 /* SystemIcons.swift in Sources */,
645B4C252BFCD3C600FD658A /* ScoreBoardView.swift in Sources */,
649ABF602BF60F2D002E8894 /* MainMenuButton.swift in Sources */,
ECE777142C2068F400D354B0 /* EditPlayerView.swift in Sources */,
EC62C5382C1C64EE0048CD0B /* CoreManager.swift in Sources */,
EC62C5252C0F68830048CD0B /* PlayerVM.swift in Sources */,
ECF3FD332C27238F00F5E62B /* Historique.swift in Sources */,
EC62C51B2C09D1790048CD0B /* PlayerStatView.swift in Sources */,
649B59B22BF65392002BAE38 /* TextStyles.swift in Sources */,
EC62C5092C0467240048CD0B /* SplashScreenView.swift in Sources */,
@ -770,8 +660,6 @@
EC62C52D2C197ED10048CD0B /* Player.swift in Sources */,
EC62C5292C1974000048CD0B /* PlayersVM.swift in Sources */,
6437FF132C25846F009D0EAF /* PlayingGameVM.swift in Sources */,
ECF3FD3A2C29A20D00F5E62B /* HistoricListVM.swift in Sources */,
ECCBA6C32C29C25000D6D9FB /* ARKitUIViewRepresentable.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -927,16 +815,12 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Manual;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_ASSET_PATHS = "\"DouShouQi_App/Preview Content\"";
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 67U885533Q;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "DouShouQi-App-Info.plist";
INFOPLIST_KEY_NSCameraUsageDescription = "";
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
@ -947,10 +831,8 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = fr.uca.iut.DouShouQI;
PRODUCT_BUNDLE_IDENTIFIER = "fr.uca.iut.DouShouQi-App";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = tpiOS_2024_06_21_off;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
@ -962,16 +844,12 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Manual;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_ASSET_PATHS = "\"DouShouQi_App/Preview Content\"";
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 67U885533Q;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "DouShouQi-App-Info.plist";
INFOPLIST_KEY_NSCameraUsageDescription = "";
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
@ -982,10 +860,8 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = fr.uca.iut.DouShouQI;
PRODUCT_BUNDLE_IDENTIFIER = "fr.uca.iut.DouShouQi-App";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = tpiOS_2024_06_21_off;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
@ -1074,7 +950,7 @@
6458347B2BF5F92600E18321 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
defaultConfigurationName = Release;
};
6458347C2BF5F92600E18321 /* Build configuration list for PBXNativeTarget "DouShouQi_App" */ = {
isa = XCConfigurationList;
@ -1083,7 +959,7 @@
6458347E2BF5F92600E18321 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
defaultConfigurationName = Release;
};
6458347F2BF5F92600E18321 /* Build configuration list for PBXNativeTarget "DouShouQi_AppTests" */ = {
isa = XCConfigurationList;
@ -1092,7 +968,7 @@
645834812BF5F92600E18321 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
defaultConfigurationName = Release;
};
645834822BF5F92600E18321 /* Build configuration list for PBXNativeTarget "DouShouQi_AppUITests" */ = {
isa = XCConfigurationList;
@ -1101,7 +977,7 @@
645834842BF5F92600E18321 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */

@ -1,22 +0,0 @@
//
// ARBoard.swift
// DouShouQi_App
//
// Created by Nathan Verdier on 24/06/2024.
//
import RealityKit
class ARBoard: Entity {
required init(image: String) {
super.init()
if let boardEntity = try? Entity.loadModel(named: image) {
self.addChild(boardEntity)
}
}
@MainActor required init() {
fatalError("init() has not been implemented")
}
}

@ -1,23 +0,0 @@
//
// ARKitUIViewBoard.swift
// DouShouQi_App
//
// Created by etudiant on 24/06/2024.
//
import SwiftUI
import DouShouQiModel
import ARKit
import RealityKit
struct ARKitUIViewRepresentable: UIViewRepresentable {
var aRKitView: ARKitView
func makeUIView(context: Context) -> ARKitView {
return aRKitView
}
func updateUIView(_ uiView: ARKitView, context: Context) {}
}

@ -1,44 +0,0 @@
//
// ARKitViewRepresentable.swift
// DouShouQi_App
//
// Created by etudiant on 24/06/2024.
//
import SwiftUI
import ARKit
import RealityKit
import DouShouQiModel
class ARKitView: ARView {
@ObservedObject var playingGameVM: PlayingGameVM
required init(frame frameRect: CGRect) {
self.playingGameVM = PlayingGameVM(withRules: ClassicRules(), andPlayer1: HumanPlayer(withName: "Player 1", andId: .player1)!, andPlayer2: HumanPlayer(withName: "Player 2", andId: .player2)!)!
super.init(frame: frameRect)
}
@MainActor required init?(coder decoder: NSCoder) {
fatalError("init(coder:) not implemented")
}
convenience init(playingGameVM: PlayingGameVM, imageBoard: String = "board", cell_size: Float = 0.1145) {
self.init(frame: UIScreen.main.bounds)
self.playingGameVM = playingGameVM
initBoard(withBoard: playingGameVM.game.board, andImage: imageBoard)
}
func applyConfiguration() {
let conf = ARWorldTrackingConfiguration()
self.session.run(conf)
}
func initBoard(withBoard board: Board, andImage image: String) {
let anchor = AnchorEntity(.plane(.horizontal, classification: .any, minimumBounds: SIMD2<Float>(1, 1)))
let arBoard = ARBoard(image: image)
anchor.addChild(arBoard)
self.scene.addAnchor(anchor)
arBoard.setPosition(SIMD3(x: 0, y: 0, z: 0), relativeTo: anchor)
}
}

@ -15,7 +15,7 @@ class CoreDataManager {
private init() {}
lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "DouShouQi_App")
let container = NSPersistentContainer(name: "DouShouQi_App") // Remplacez par le nom de votre modèle
container.loadPersistentStores { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
@ -55,100 +55,4 @@ class CoreDataManager {
return []
}
}
func deletePlayer(playerVM: PlayerVM) {
let fetchRequest: NSFetchRequest<CDPlayer> = CDPlayer.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "name == %@", playerVM.player.name)
do {
let players = try context.fetch(fetchRequest)
if let playerToDelete = players.first {
context.delete(playerToDelete)
saveContext()
} else {
print("Player not found")
}
} catch {
print("Failed to fetch player for deletion: \(error)")
}
}
func updatePlayer(playerVM: PlayerVM) {
let fetchRequest: NSFetchRequest<CDPlayer> = CDPlayer.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "name == %@", playerVM.player.name)
do {
let players = try context.fetch(fetchRequest)
if let playerToUpdate = players.first {
playerToUpdate.name = playerVM.player.name
playerToUpdate.photo = playerVM.player.photo
saveContext()
} else {
print("Player not found")
}
} catch {
print("Failed to fetch player for update: \(error)")
}
}
func saveHistorique(historique: HistoricVM) {
let historiqueEntity = CDHistorique(context: context)
historiqueEntity.player1_name = historique.historic.player1_name
historiqueEntity.player2_name = historique.historic.player2_name
historiqueEntity.time = historique.historic.time
historiqueEntity.result = historique.historic.result
saveContext()
}
func fetchHistoriques() -> [CDHistorique] {
let fetchRequest: NSFetchRequest<CDHistorique> = CDHistorique.fetchRequest()
do {
return try context.fetch(fetchRequest)
} catch {
print("Failed to fetch historiques: \(error)")
return []
}
}
func deleteHistorique(historique: Historique) {
let fetchRequest: NSFetchRequest<CDHistorique> = CDHistorique.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "player1_name == %@ AND player2_name == %@ AND time == %@", historique.player1_name, historique.player2_name, historique.time)
do {
let historiques = try context.fetch(fetchRequest)
if let historiqueToDelete = historiques.first {
context.delete(historiqueToDelete)
saveContext()
} else {
print("Historique not found")
}
} catch {
print("Failed to fetch historique for deletion: \(error)")
}
}
func countVictories(for player: String) -> Int {
let fetchRequest: NSFetchRequest<CDHistorique> = CDHistorique.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "(player1_name == %@ AND result == player1_name) OR (player2_name == %@ AND result == player2_name)", player, player)
do {
return try context.fetch(fetchRequest).count
} catch {
print("Failed to fetch victories for player: \(error)")
return 0
}
}
func countDefeats(for player: String) -> Int {
let fetchRequest: NSFetchRequest<CDHistorique> = CDHistorique.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "(player1_name == %@ AND result != player1_name) OR (player2_name == %@ AND result != player2_name)", player, player)
do {
return try context.fetch(fetchRequest).count
} catch {
print("Failed to fetch defeats for player: \(error)")
return 0
}
}
}

@ -1,22 +0,0 @@
//
// Historique.swift
// DouShouQi_App
//
// Created by étudiant on 22/06/2024.
//
import Foundation
public class Historique{
var player1_name: String
var player2_name: String
var time: String
var result: String
init(player1_name: String, player2_name: String, time: String, result: String){
self.player1_name = player1_name
self.player2_name = player2_name
self.result = result
self.time = time
}
}

@ -1,28 +0,0 @@
//
// CDHistoriqueExtension.swift
// DouShouQi_App
//
// Created by étudiant on 22/06/2024.
//
import Foundation
import CoreData
extension CDHistorique {
func toModel() -> Historique {
return Historique(
player1_name: self.player1_name ?? "",
player2_name: self.player2_name ?? "",
time: self.time ?? "",
result: self.result ?? ""
)
}
convenience init(player1_name: String, player2_name: String, time: String, result: String, context: NSManagedObjectContext) {
self.init(context: context)
self.player1_name = player1_name
self.player2_name = player2_name
self.time = time
self.result = result
}
}

@ -13,7 +13,6 @@ public struct Colors {
static let Button = Color("ButtonColor")
static let MeepleP1 = UIColor(named: "MeepleP1")
static let TextButton = Color("ButtonTextColor")
static let PopupBackground = Color("PopUpBackground")
static let MeepleP2 = UIColor(named: "MeepleP2")
static let WinnerBackground = Color("WinnerBackground")
}

@ -23,9 +23,9 @@
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.000",
"green" : "0.000",
"red" : "0.000"
"blue" : "1.000",
"green" : "1.000",
"red" : "1.000"
}
},
"idiom" : "universal"

@ -1,38 +0,0 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "1.000",
"green" : "1.000",
"red" : "1.000"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.600",
"green" : "0.600",
"red" : "0.600"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -1,9 +1,7 @@
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 107 107" width="107" height="107">
<title>title-background-svg</title>
<style>
.s0 { fill: #ff0a02 }
</style>
<g id="Layer">
<path id="Layer" fill-rule="evenodd" class="s0" d="m72.5 81.5q-0.1-0.8-1-1-3.6 2.1-7 4-2.6 2.2-5.5 1-1.6 1.7-2 4-2.2-1.9-4.5 0-7.9-2-15.5-5-0.5 0.5-1 1-3.6-4.2-8.5-6.5-1-2-2-4-3.8-0.8-6.5-3.5-0.6-8.3-3.5-16 1.5-2 3-4-3.3-5.3 0-11 7.6-10.3 16-20 2.4-0.1 5 1 5.9-1.9 12-3 2.4-0.8 3.5-3 11.8 5.1 22.5 12 3.5-2.3 2 1 1 2 3 3 1.4 2.8 1 6 4.8 0.6 7 5-2 7.7 0 15.5-0.3 3.8-3 2.5-1.9 2.3 1 3.5-2.1 1.8-2.5 4.5-0.5-1.5-1-3-4.3 7.5-9 16-1.5-1-3.5 0z"/>
</g>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="107px" height="107px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
<g><path style="opacity:1" fill="#fffdfc" d="M -0.5,-0.5 C 35.1667,-0.5 70.8333,-0.5 106.5,-0.5C 106.5,35.1667 106.5,70.8333 106.5,106.5C 70.8333,106.5 35.1667,106.5 -0.5,106.5C -0.5,70.8333 -0.5,35.1667 -0.5,-0.5 Z"/></g>
<g><path style="opacity:1" fill="#ff0a02" d="M 72.5,81.5 C 72.44,80.9569 72.1067,80.6236 71.5,80.5C 69.1074,81.9295 66.7741,83.2628 64.5,84.5C 62.7422,85.9985 60.9088,86.3319 59,85.5C 57.9563,86.6226 57.2896,87.9559 57,89.5C 55.5421,88.2532 54.0421,88.2532 52.5,89.5C 47.2625,88.1915 42.0958,86.5248 37,84.5C 36.6667,84.8333 36.3333,85.1667 36,85.5C 33.6166,82.7272 30.7833,80.5605 27.5,79C 26.8333,77.6667 26.1667,76.3333 25.5,75C 22.9664,74.4837 20.7998,73.317 19,71.5C 18.5803,65.9729 17.4137,60.6396 15.5,55.5C 16.5,54.1667 17.5,52.8333 18.5,51.5C 16.3145,47.9728 16.3145,44.3061 18.5,40.5C 23.5438,33.6008 28.8772,26.9341 34.5,20.5C 36.0924,20.4173 37.7591,20.7506 39.5,21.5C 43.4346,20.2463 47.4346,19.2463 51.5,18.5C 53.0879,17.9904 54.2545,16.9904 55,15.5C 62.8685,18.8827 70.3685,22.8827 77.5,27.5C 79.8375,25.9893 80.5042,26.3227 79.5,28.5C 80.1667,29.8333 81.1667,30.8333 82.5,31.5C 83.4656,33.396 83.7989,35.396 83.5,37.5C 86.6829,37.929 89.0162,39.5957 90.5,42.5C 89.1903,47.6537 89.1903,52.8204 90.5,58C 90.2838,60.5068 89.2838,61.3401 87.5,60.5C 86.2612,62.0072 86.5946,63.1739 88.5,64C 87.1068,65.1711 86.2735,66.6711 86,68.5C 85.6667,67.5 85.3333,66.5 85,65.5C 82.1612,70.4675 79.1612,75.8008 76,81.5C 75.0138,80.8288 73.8471,80.8288 72.5,81.5 Z"/></g>
<g><path style="opacity:1" fill="#ffaba5" d="M 72.5,81.5 C 70.2459,82.4151 68.2459,83.7484 66.5,85.5C 65.8165,85.1373 65.1499,84.8039 64.5,84.5C 66.7741,83.2628 69.1074,81.9295 71.5,80.5C 72.1067,80.6236 72.44,80.9569 72.5,81.5 Z"/></g>
</svg>

Before

Width:  |  Height:  |  Size: 656 B

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -13,25 +13,25 @@ import DouShouQiModel
struct GameResumeFrame: View {
// Players Params
let historicVm: HistoricVM
let gameVM: GameVM
var body: some View {
ZStack {
HStack(alignment: .center) {
VStack(alignment: .leading) {
Text("\(historicVm.historic.player1_name) vs \(historicVm.historic.player2_name)")
Text("\(gameVM.player1Name) vs \(gameVM.player2Name)")
.font(.headline)
Text(historicVm.historic.result)
.font(.subheadline)
.foregroundColor(.gray)
Text(historicVm.historic.time)
Text(gameVM.gameStatus)
.font(.subheadline)
.foregroundColor(.gray)
}
Spacer()
Text("Detail >")
.frame(width: 100)
.foregroundColor(.gray)
}
.padding(10)
@ -42,3 +42,14 @@ struct GameResumeFrame: View {
}.padding(2)
}
}
struct GameResumeFrame_Previews: PreviewProvider {
static var previews: some View {
do {
let game = try Game(withRules: VerySimpleRules(), andPlayer1: HumanPlayer(withName: "Rémi", andId: .player1)!, andPlayer2: HumanPlayer(withName: "Nathan", andId: .player2)!)
return AnyView(GameResumeFrame(gameVM: GameVM(withGame: game)))
} catch {
return AnyView(Text("Erreur lors de la création du jeu : \(error.localizedDescription)"))
}
}
}

@ -10,7 +10,6 @@ import DouShouQiModel
struct TopGameBoard: View {
@ObservedObject var gameVM: PlayingGameVM
@ObservedObject var chronoVM: ChronometerViewModel
var body: some View {
VStack {
@ -33,7 +32,7 @@ struct TopGameBoard: View {
Image(systemName: "clock")
.resizable()
.frame(width: 30, height: 30)
Text(chronoVM.formattedTime())
Text("4:11")
.font(.title)
.foregroundColor(.black)
}
@ -44,6 +43,9 @@ struct TopGameBoard: View {
Text("Last move :")
.font(.title2)
.foregroundColor(.black)
/*Image(systemName: "cheetah")
.resizable()
.frame(width: 30, height: 30)*/
Text(gameVM.lastPieceMoved)
Text(gameVM.lastMove)
.font(.title2)
@ -60,3 +62,9 @@ struct TopGameBoard: View {
.background(Color.red.opacity(0.5))
}
}
//struct TopGameBoard_Previews: PreviewProvider {
// static var previews: some View {
// TopGameBoard(gameVM: vm)
// }
//}

@ -1,19 +1,19 @@
//
// MainMenuButton.swift
// Dou}Qi_App
// DouShouQi_App
//
// Created by Rémi REGNAULT on 16/05/2024.
//
import SwiftUI
struct MainMenuButton: View {
struct MainMenuButton<Destination: View>: View {
// Text Params
var text: String
var destination: Destination
var sound: String
// Fonction à executer
var onClick: (() -> Void)?
// Button Alignment
var horizontalAlignment: Alignment = .center
@ -25,10 +25,7 @@ struct MainMenuButton: View {
var bottomRightCorner: CGFloat = 0
var body: some View {
Button(action: {
// playSound(named: sound)
onClick?()
}) {
NavigationLink(destination: destination) {
Text(text.uppercased())
.font(.headline)
.fontWeight(.semibold)
@ -40,10 +37,12 @@ struct MainMenuButton: View {
.clipShape(RoundedRectangle(cornerSize: CGSize(width: 0, height: 0)))
.mask(RoundedCornersShape(cornerRadii: (topLeft: topLeftCorner, topRight: topRightCorner, bottomLeft: bottomLeftCorner, bottomRight: bottomRightCorner)))
)
.frame(width: UIScreen.main.bounds.width / 1.7)
.frame(maxWidth: .infinity, alignment: horizontalAlignment)
}
.buttonStyle(PlainButtonStyle())
.simultaneousGesture(TapGesture().onEnded {
playSound(named: sound)
})
.frame(width: UIScreen.main.bounds.width / 1.7)
.frame(maxWidth: .infinity, alignment: horizontalAlignment)
}
}
@ -93,6 +92,6 @@ struct RoundedCornersShape: Shape {
struct MainMenuButton_Previews: PreviewProvider {
static var previews: some View {
MainMenuButton(text: "test", sound: "TitleScreenButtonSound", horizontalAlignment: .leading, topRightCorner: 10, bottomRightCorner: 10)
MainMenuButton(text: "test", destination: HistoricView(historicVM: HistoricVM()), sound: "TitleScreenButtonSound", horizontalAlignment: .leading, topRightCorner: 10, bottomRightCorner: 10)
}
}

@ -75,16 +75,16 @@ struct AddPlayerView: View {
isPresented = false
}) {
Text("Cancel")
.foregroundColor(Colors.TextButton)
.foregroundColor(.white)
.padding()
.background(Colors.Button)
.background(Color.red)
.cornerRadius(10)
}
}
}
.padding()
.frame(maxWidth: 300)
.background(Colors.PopupBackground)
.background(Color.white)
.cornerRadius(20)
.shadow(radius: 10)
.alert(isPresented: $showAlert) {

@ -1,11 +1,18 @@
//
// PlayerRow.swift
// DouShouQi_App
//
// Created by étudiant on 26/05/2024.
//
import Foundation
import SwiftUI
struct PlayerRow: View {
@ObservedObject var player: PlayerVM
@State private var showDetailView = false
@ObservedObject var players: PlayersVM
var player: PlayerVM
@Binding var players: PlayersVM
@State private var showDetailView = false
var body: some View {
HStack {
@ -29,20 +36,18 @@ struct PlayerRow: View {
.font(.subheadline)
}
Spacer()
HStack(spacing: 10) {
Button(action: {
showDetailView.toggle()
}) {
Image(systemName: "info.circle")
.foregroundColor(.blue)
}
.sheet(isPresented: $showDetailView) {
PlayerStatView(player: player, players: players, showDetailView: $showDetailView)
.presentationDetents([.medium, .large])
}
Button(action: {
showDetailView.toggle()
}) {
Image(systemName: "info.circle")
.foregroundColor(.blue)
}
.sheet(isPresented: $showDetailView) {
PlayerStatView(player: player)
}
}
.padding()
.background(Color.white)
.cornerRadius(10)
.shadow(radius: 1)
}

@ -8,11 +8,8 @@
import SwiftUI
struct PlayerStatView: View {
@StateObject var player: PlayerVM
@State private var showEditView = false
@State private var showDeleteAlert = false
@ObservedObject var players: PlayersVM
@Binding var showDetailView: Bool
var player: PlayerVM
var body: some View {
VStack {
if let image = UIImage(contentsOfFile: player.player.photo) {
@ -23,7 +20,6 @@ struct PlayerStatView: View {
.padding(.top, 10)
} else {
Image(systemName: "person.circle.fill")
.resizable()
.frame(width: 100, height: 100)
.clipShape(Circle())
@ -33,7 +29,7 @@ struct PlayerStatView: View {
Text(player.player.name)
.font(.largeTitle)
.foregroundColor(Colors.TitleText)
.foregroundColor(.black)
.padding(.top, 10)
VStack(alignment: .leading, spacing: 10) {
@ -49,48 +45,14 @@ struct PlayerStatView: View {
}
HStack {
Image(systemName: "chart.line.uptrend.xyaxis")
Text("Win Rate : \(String(format: "%.2f", (Double(player.win) / Double(player.win + player.loose)) * 100))%")
Text("Win Rate : \(String(format: "%.2f", Double(player.win) / Double(player.win + player.loose) * 100))%")
.font(.title2)
}
HStack {
Image(systemName: "list.number")
Text("Rank : \(player.rank)")
Text("Rank : 3")
.font(.title2)
}
HStack{
Button(action: {
showEditView.toggle()
}) {
Image(systemName: "pencil")
.foregroundColor(.green)
}
.sheet(isPresented: $showEditView) {
EditPlayerView(isPresented: $showEditView, player: player, playersVM: players, playerName: player.player.name)
}
Button(action: {
showDeleteAlert.toggle()
}) {
Image(systemName: "trash")
.foregroundColor(.red)
}
.alert(isPresented: $showDeleteAlert) {
Alert(
title: Text("Delete Player"),
message: Text("Are you sure you want to delete this player?"),
primaryButton: .destructive(Text("Delete")) {
CoreDataManager.shared.deletePlayer(playerVM: player)
players.refreshPlayers()
showDetailView = false
},
secondaryButton: .cancel()
)
}
}
}
.padding()
Spacer()

@ -11,18 +11,15 @@ struct ShowAllPlayer: View {
@State private var isShowingSheet = false
@Binding var currentShowingSheet: Bool
@ObservedObject var currentPlayer: PlayerVM
@ObservedObject var otherPlayer: PlayerVM
@ObservedObject var currentPlayer:PlayerVM
@ObservedObject var otherPlayer:PlayerVM
@ObservedObject var playersVM: PlayersVM
var body: some View {
VStack(alignment: .leading, spacing: 20) {
Text("Choose a player:")
.font(.title2)
.fontWeight(.bold)
.padding(.leading)
.padding(.top, 20)
VStack(alignment: .leading) {
Text("Choose a player :")
List {
ForEach($playersVM.players, id: \.self) { playerVM in
if otherPlayer.player.name != playerVM.player.wrappedValue.name {
@ -38,50 +35,34 @@ struct ShowAllPlayer: View {
Image(systemName: "person.fill")
.resizable()
.frame(width: 30, height: 30)
.foregroundColor(.blue)
.padding(.trailing, 10)
Text(playerVM.player.name.wrappedValue)
.font(.headline)
.foregroundColor(.primary)
Spacer()
if currentPlayer.player.name == playerVM.player.wrappedValue.name {
Image(systemName: "checkmark.circle.fill")
.foregroundColor(.green)
}
}
.padding()
.background(Color(.systemGray6))
.background(Color.blue)
.foregroundColor(.white)
.cornerRadius(10)
.shadow(radius: 2)
.shadow(radius: 3)
}
}
}
}
.listStyle(InsetGroupedListStyle())
Button(action: {
self.isShowingSheet = true
}) {
HStack {
Image(systemName: "plus.circle.fill")
.foregroundColor(.white)
Text("Add a player")
.font(.headline)
.foregroundColor(.white)
}
.padding()
.frame(maxWidth: .infinity)
.background(Color.red)
.cornerRadius(10)
.padding(.horizontal)
Text("Add a player")
.font(.headline)
.foregroundColor(.white)
.padding()
.frame(maxWidth: .infinity)
.background(Color.red)
.cornerRadius(10)
.padding(.horizontal)
}
.padding(.bottom, 20)
.padding(.bottom)
.sheet(isPresented: $isShowingSheet) {
AddPlayerView(isPresented: $isShowingSheet, playersVM: playersVM)
}
}
.background(Color(.systemGroupedBackground))
.edgesIgnoringSafeArea(.all)
}
}

@ -1,11 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="21754" systemVersion="22G91" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
<entity name="CDHistorique" representedClassName="CDHistorique" syncable="YES" codeGenerationType="class">
<attribute name="player1_name" optional="YES" attributeType="String"/>
<attribute name="player2_name" optional="YES" attributeType="String"/>
<attribute name="result" optional="YES" attributeType="String"/>
<attribute name="time" optional="YES" attributeType="String"/>
</entity>
<entity name="CDPlayer" representedClassName="CDPlayer" syncable="YES" codeGenerationType="class">
<attribute name="name" optional="YES" attributeType="String"/>
<attribute name="photo" optional="YES" attributeType="String"/>

@ -8,7 +8,7 @@
import SwiftUI
@main
@main
struct DouShouQi_AppApp: App {
// Create an instance of SettingsVM
@StateObject private var settingsVM = SettingsVM()

@ -1,32 +0,0 @@
//
// ChronoVM.swift
// DouShouQi_App
//
// Created by étudiant on 24/06/2024.
//
import SwiftUI
import Combine
class ChronometerViewModel: ObservableObject {
@Published var elapsedTime: TimeInterval = 0
private var timer: AnyCancellable?
func startTimer() {
let startDate = Date()
timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect().sink { _ in
self.elapsedTime = Date().timeIntervalSince(startDate)
}
}
func stopTimer() {
timer?.cancel()
}
func formattedTime() -> String {
let minutes = Int(elapsedTime) / 60
let seconds = Int(elapsedTime) % 60
return String(format: "%02d:%02d", minutes, seconds)
}
}

@ -44,7 +44,7 @@ class GameVM: ObservableObject, Identifiable {
}
// Init
init(withGame game: Game, time: String) {
init(withGame game: Game) {
self.game = game
}
}

@ -1,39 +0,0 @@
//
// HistoricListVM.swift
// DouShouQi_App
//
// Created by étudiant on 24/06/2024.
//
import Foundation
import SwiftUI
import DouShouQiModel
class HistoricListVM: ObservableObject {
@Published var historicList: [HistoricVM]
public func SavePlayer(historic: HistoricVM){
historicList.append(historic)
CoreDataManager.shared.saveHistorique(historique: historic)
}
public func getAllHistoric() -> [HistoricVM]{
let coreDataPlayers = CoreDataManager.shared.fetchHistoriques()
self.historicList = coreDataPlayers.map { HistoricVM(historic: $0.toModel()) }
return historicList
}
public func groupByDate() -> [String: [HistoricVM]] {
let groupedDictionary = Dictionary(grouping: historicList) { historicVM in
return historicVM.date
}
return groupedDictionary
}
init() {
historicList = []
historicList = getAllHistoric()
}
}

@ -1,33 +0,0 @@
//
// HistoricVM.swift
// DouShouQi_App
//
// Created by Rémi REGNAULT on 29/05/2024.
//
import Foundation
import SwiftUI
import DouShouQiModel
class HistoricVM: ObservableObject, Identifiable, Hashable{
public static func == (lhs: HistoricVM, rhs: HistoricVM) -> Bool {
return lhs.id == rhs.id
}
public func hash(into hasher: inout Hasher) {
hasher.combine(id)
}
@Published var historic: Historique
var date: String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
return dateFormatter.string(from: Date())
}
init(historic: Historique) {
self.historic = historic
}
}

@ -0,0 +1,26 @@
//
// HistoricVM.swift
// DouShouQi_App
//
// Created by Rémi REGNAULT on 29/05/2024.
//
import Foundation
import SwiftUI
import DouShouQiModel
class HistoricVM: ObservableObject {
// Properties
public var gameVMs: [GameVM]
// Init
init() {
gameVMs = []
do {
let game = try Game(withRules: VerySimpleRules(), andPlayer1: HumanPlayer(withName: "Rémi", andId: .player1)!, andPlayer2: HumanPlayer(withName: "Nathan", andId: .player2)!)
gameVMs.append(GameVM(withGame: game))
} catch {
// Do nothing
}
}
}

@ -10,30 +10,21 @@ import DouShouQiModel
public class PlayerVM: ObservableObject, Identifiable, Hashable{
public static func == (lhs: PlayerVM, rhs: PlayerVM) -> Bool {
return lhs.id == rhs.id
}
return lhs.id == rhs.id
}
public func hash(into hasher: inout Hasher) {
hasher.combine(id)
}
public func hash(into hasher: inout Hasher) {
hasher.combine(id)
}
@Published var player: Player
var loose: Int {
return CoreDataManager.shared.countDefeats(for: player.name)
var loose: Int{
return 0
}
var win: Int {
return CoreDataManager.shared.countVictories(for: player.name)
var win: Int{
return 0
}
var rank: Int {
let allPlayers = CoreDataManager.shared.fetchPlayers()
let allPlayerVMs = allPlayers.map { PlayerVM(player: $0.toModel()) }
let sortedPlayers = allPlayerVMs.sorted { $0.win > $1.win }
if let rankIndex = sortedPlayers.firstIndex(where: { $0.player.name == self.player.name }) {
return rankIndex + 1
}
var rank: Int{
return 0
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save