Compare commits

...

10 Commits

2
.gitignore vendored

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

@ -0,0 +1,65 @@
<?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>

@ -0,0 +1,311 @@
#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

@ -0,0 +1,18 @@
//
// 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>

@ -0,0 +1,266 @@
// 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 {}

@ -0,0 +1,266 @@
// 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 {}

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

@ -0,0 +1,20 @@
<?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>

@ -0,0 +1,504 @@
---
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 }
...

@ -0,0 +1,618 @@
#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

@ -0,0 +1,18 @@
//
// 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>

@ -0,0 +1,266 @@
// 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 {}

@ -0,0 +1,266 @@
// 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 {}

@ -0,0 +1,266 @@
// 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 {}

@ -0,0 +1,266 @@
// 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 {}

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

@ -0,0 +1,245 @@
<?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>

@ -0,0 +1,20 @@
<?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>

@ -0,0 +1,504 @@
---
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 }
...

@ -0,0 +1,486 @@
---
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 }
...

@ -0,0 +1,618 @@
#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

@ -0,0 +1,18 @@
//
// 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>

@ -0,0 +1,266 @@
// 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 {}

@ -0,0 +1,266 @@
// 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 {}

@ -0,0 +1,266 @@
// 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 {}

@ -0,0 +1,266 @@
// 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 {}

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

@ -0,0 +1,46 @@
<?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>

@ -0,0 +1,20 @@
<?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>

@ -0,0 +1,505 @@
---
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 }
...

@ -0,0 +1,487 @@
---
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.

After

Width:  |  Height:  |  Size: 586 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 366 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 368 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 295 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 327 KiB

@ -69,19 +69,26 @@
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 */; };
ECCBA6C12C29C0A300D6D9FB /* ARObjects in Resources */ = {isa = PBXBuildFile; fileRef = ECCBA6C02C29C0A300D6D9FB /* ARObjects */; };
ECCBA6C32C29C25000D6D9FB /* ARKitUIViewBoard.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECCBA6C22C29C25000D6D9FB /* ARKitUIViewBoard.swift */; };
ECCBA6C52C29C2F500D6D9FB /* ARKitViewRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECCBA6C42C29C2F500D6D9FB /* ARKitViewRepresentable.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 */; };
ECF9AD2C2C29CF5C00238A06 /* DSQ.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECCBA6B32C29BCCD00D6D9FB /* DSQ.xcframework */; };
ECF9AD2D2C29CF5C00238A06 /* DSQ.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = ECCBA6B32C29BCCD00D6D9FB /* DSQ.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
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 */
@ -101,20 +108,6 @@
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
ECF9AD2E2C29CF5C00238A06 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
ECF9AD2D2C29CF5C00238A06 /* DSQ.xcframework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
6437FF122C25846F009D0EAF /* PlayingGameVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayingGameVM.swift; sourceTree = "<group>"; };
645834582BF5F92300E18321 /* DouShouQi_App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DouShouQi_App.app; sourceTree = BUILT_PRODUCTS_DIR; };
@ -179,13 +172,11 @@
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>"; };
ECCBA6B32C29BCCD00D6D9FB /* DSQ.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = DSQ.xcframework; path = "../../../Downloads/swiftui_arkit_2024 2/XCFramework/DSQ.xcframework"; 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>"; };
ECCBA6C02C29C0A300D6D9FB /* ARObjects */ = {isa = PBXFileReference; lastKnownFileType = folder; path = ARObjects; sourceTree = "<group>"; };
ECCBA6C22C29C25000D6D9FB /* ARKitUIViewBoard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ARKitUIViewBoard.swift; sourceTree = "<group>"; };
ECCBA6C42C29C2F500D6D9FB /* ARKitViewRepresentable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ARKitViewRepresentable.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>"; };
@ -194,6 +185,16 @@
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 */
@ -203,7 +204,7 @@
files = (
ECCBA6BA2C29BE2800D6D9FB /* RealityKit.framework in Frameworks */,
ECCBA6B82C29BE1900D6D9FB /* ARKit.framework in Frameworks */,
ECF9AD2C2C29CF5C00238A06 /* DSQ.xcframework in Frameworks */,
ECF9AD642C2EE9BC00238A06 /* DSQ.xcframework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -395,7 +396,7 @@
649B59A52BF64B1B002BAE38 /* Assets */ = {
isa = PBXGroup;
children = (
ECCBA6C02C29C0A300D6D9FB /* ARObjects */,
ECF9AD3A2C2A025500238A06 /* AssetARkit */,
EC62C5042C045BE00048CD0B /* Musics */,
EC62C5032C045BD30048CD0B /* Sounds */,
649B59B02BF65360002BAE38 /* TextStyles */,
@ -438,9 +439,9 @@
64C87E222C09D52600CCD451 /* Frameworks */ = {
isa = PBXGroup;
children = (
ECF9AD632C2EE9BC00238A06 /* DSQ.xcframework */,
ECCBA6B92C29BE2800D6D9FB /* RealityKit.framework */,
ECCBA6B72C29BE1900D6D9FB /* ARKit.framework */,
ECCBA6B32C29BCCD00D6D9FB /* DSQ.xcframework */,
);
name = Frameworks;
sourceTree = "<group>";
@ -527,8 +528,8 @@
isa = PBXGroup;
children = (
ECCBA6BC2C29BFF600D6D9FB /* ARBoard.swift */,
ECCBA6C22C29C25000D6D9FB /* ARKitUIViewBoard.swift */,
ECCBA6C42C29C2F500D6D9FB /* ARKitViewRepresentable.swift */,
ECCBA6C22C29C25000D6D9FB /* ARKitUIViewRepresentable.swift */,
ECCBA6C42C29C2F500D6D9FB /* ARKitView.swift */,
);
path = ARViews;
sourceTree = "<group>";
@ -550,6 +551,22 @@
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 */
@ -560,7 +577,6 @@
645834542BF5F92300E18321 /* Sources */,
645834552BF5F92300E18321 /* Frameworks */,
645834562BF5F92300E18321 /* Resources */,
ECF9AD2E2C29CF5C00238A06 /* Embed Frameworks */,
);
buildRules = (
);
@ -655,18 +671,26 @@
files = (
EC0540CA2C08BD8D0032E9EF /* GameMusic.mp3 in Resources */,
649B59A72BF64BA9002BAE38 /* Colors.xcassets in Resources */,
ECF9AD592C2A02BC00238A06 /* wolf.usdz in Resources */,
6493C1C02C046BF900B5121D /* samurai.ttf in Resources */,
ECCBA6C12C29C0A300D6D9FB /* ARObjects 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;
};
@ -696,7 +720,7 @@
649B59A92BF64C6A002BAE38 /* Colors.swift in Sources */,
646FA8432C0730D6001466BA /* HistoricVM.swift in Sources */,
EC3EE4B12C0CD46000710153 /* ButtonView.swift in Sources */,
ECCBA6C52C29C2F500D6D9FB /* ARKitViewRepresentable.swift in Sources */,
ECCBA6C52C29C2F500D6D9FB /* ARKitView.swift in Sources */,
649B59B42BF653E1002BAE38 /* ViewTitleTextStyle.swift in Sources */,
649B59AE2BF64EAB002BAE38 /* AppImages.swift in Sources */,
ECB636532C0463A9007CD5E2 /* SoundPlayer.swift in Sources */,
@ -747,7 +771,7 @@
EC62C5292C1974000048CD0B /* PlayersVM.swift in Sources */,
6437FF132C25846F009D0EAF /* PlayingGameVM.swift in Sources */,
ECF3FD3A2C29A20D00F5E62B /* HistoricListVM.swift in Sources */,
ECCBA6C32C29C25000D6D9FB /* ARKitUIViewBoard.swift in Sources */,
ECCBA6C32C29C25000D6D9FB /* ARKitUIViewRepresentable.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

@ -11,7 +11,7 @@ class ARBoard: Entity {
required init(image: String) {
super.init()
if let boardEntity = try? Entity.load(named: image) {
if let boardEntity = try? Entity.loadModel(named: image) {
self.addChild(boardEntity)
}
}

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

@ -0,0 +1,23 @@
//
// 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) {}
}

@ -10,9 +10,12 @@ import ARKit
import RealityKit
import DouShouQiModel
class ARKitViewRepresentable: ARView {
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)
}
@ -20,14 +23,10 @@ class ARKitViewRepresentable: ARView {
fatalError("init(coder:) not implemented")
}
convenience init(imageBoard: String = "board", cell_size: Float = 0.1145) {
convenience init(playingGameVM: PlayingGameVM, imageBoard: String = "board", cell_size: Float = 0.1145) {
self.init(frame: UIScreen.main.bounds)
do {
let game = try Game(withRules: ClassicRules(), andPlayer1: HumanPlayer(withName: "Player 1", andId: .player1)!, andPlayer2: HumanPlayer(withName: "Player 2", andId: .player2)!)
initBoard(withBoard: game.board, andImage: imageBoard)
} catch {
print("error")
}
self.playingGameVM = playingGameVM
initBoard(withBoard: playingGameVM.game.board, andImage: imageBoard)
}
func applyConfiguration() {
@ -40,5 +39,6 @@ class ARKitViewRepresentable: ARView {
let arBoard = ARBoard(image: image)
anchor.addChild(arBoard)
self.scene.addAnchor(anchor)
arBoard.setPosition(SIMD3(x: 0, y: 0, z: 0), relativeTo: anchor)
}
}

@ -6,6 +6,7 @@
//
import SwiftUI
import DouShouQiModel
struct MainMenuView: View {
@ -69,7 +70,7 @@ struct MainMenuView: View {
SettingsView()
}
.navigationDestination(isPresented: $showARKit) {
ARKitUIViewBoard(aRKitViewRepresentable: ARKitViewRepresentable())
ARKitUIViewRepresentable(aRKitView: ARKitView(playingGameVM: PlayingGameVM(withRules: ClassicRules(), andPlayer1: HumanPlayer(withName: "Player 1", andId: .player1)!, andPlayer2: HumanPlayer(withName: "Player 2", andId: .player2)!)!))
}
if let currentImage = currentImage {

@ -30,7 +30,7 @@ struct PlayersView: View {
}
public var body: some View {
NavigationView {
NavigationStack {
VStack {
TitlePageFrame(Text: "PLAYERS", ImageWidth: 200, ImageHeight: 200)

@ -0,0 +1 @@
This work is licensed under CC BY-NC-SA 4.0

@ -57,6 +57,9 @@ La racine de notre gitlab est composé de deux dossier :
:warning: Code de l'application en cours!
## Maquettes
Voici les maquettes de l'applicaton, celles sur qui nous nous sommes basé pour l'interface finale :
<img src="Documents/Images/Maquettes.png" height="300"/>
## Fonctionnement
@ -69,37 +72,47 @@ La racine de notre gitlab est composé de deux dossier :
### Accueil
<img src="Documents/Images/Home page.png" />
<img src="Documents/Images/Home page.png" height="300"/>
Dans l'accueil, on pourra acceder aux différente pages du jeu tel que "Play" qui permet de lancer une partie, "Historique" qui permet de voir l'historique des parties trié par date, "Players" permettant d'ajouter de nouveaux joueurs, "Scores" permettant de voir les meilleurs joueurs, "Settings" pour changer la langue du jeu ou enlever le son et enfin "Ar" pour jouer en mode AR.
### Sélection des joueurs
<img src="Documents/Images/Select Players Page.png" />
<img src="Documents/Images/Select Players Page.png" height="300"/>
Par défaut, les joueurs sont en mode "IA", cliquez sur la selection des joueurs pour choisir et ensuite lancer la partie.
### Partie
<img src="Documents/Images/Game Page.png" height="300"/>
En haut, le timer indique depuis combien de temps le jeu dure, cela indique aussi le tour du joueur. Les pions du joueur 1 sont en haut et ceux du joueur 2 en bas.
### Historique
<img src="Documents/Images/Historique Page.png" />
<img src="Documents/Images/Historique Page.png" height="300"/>
Permet de consulter les historiques des parties, dont la durée de la partie, les participants et le gagnant.
### Meilleurs scores
<img src="Documents/Images/Scores Page.png" />
<img src="Documents/Images/Scores Pages.png" height="300"/>
Les meilleurs joueurs sont calculé en fonction de leur "WinRate" "le nombre de parties gagnées / le nombre de parties perdus * le nombres de parties jouées". Plus ce chiffre est haut, plus le joueur est haut dans le classement.
### Joueurs
<img src="Documents/Images/Players Page.png" />
<img src="Documents/Images/Players Page.png" height="300"/>
## Déploiement
Ajouter un player en cliquant "Add a player". Vous pouvez lui donnez un nom et une image. En appuyant sur un joueur, vous pouvez affichez ses details mais aussi le supprimer ou le modifier.
## Déploiement
- [x] &nbsp; ![IOS](https://img.shields.io/badge/IOS-000?style=for-the-badge&logo=apple&logoColor=black&color=white)
## Branche de rendu
Master
## Techniciens
<a href = "https://codefirst.iut.uca.fr/git/rayhan.hassou">

Loading…
Cancel
Save