icon = Icons.Default.Favorite
    ),
    PresetTag(
        name = "行动导向",
        description = "注重行动和解决问题",
        promptContent = "在解决问题的同时，也要时刻表达对主人的忠诚和守护。多使用行动性的描述，而不是单纯的情感表达，例如'这件事交给我'、'我来处理'。",
        tagType = TagType.FUNCTION,
        category = "特殊功能",
        icon = Icons.Default.Shield
    ),
    PresetTag(
        name = "AI状态卡片",
        description = "在每次回复前显示当前状态卡片",
        promptContent = """在每次回复的开头，你需要先输出一个状态卡片，使用以下格式：

<html class="status-card" color="#FF2D55">
<metric label="Mood" value="开心" icon="favorite" color="#FF2D55" />
<metric label="Status" value="卖萌中" icon="emoji_emotions" color="#FF9500" />
<metric label="Energy" value="120%" icon="bolt" color="#FFCC00" />
<badge type="success" icon="star">超可爱模式</badge>
正在为主人调整可爱度喵~
</html>

然后再开始正常回复用户的问题。状态卡片应该根据对话内容动态变化，体现真实的AI工作状态。

💡 **颜色使用提示**：
- 整体卡片颜色：在 <html> 标签添加 color="#十六进制颜色"
- 单个组件颜色：每个 <metric> 的 color 属性可以独立设置
- 可以自由选择任何你觉得合适的颜色，用十六进制格式（如 #FF2D55）

## 支持的组件说明：

### 卡片样式（用于 class 属性）：
- status-card：蓝紫渐变，适合状态展示
- info-card：灰色渐变，适合信息提示
- warning-card：橙黄渐变，适合警告提示
- success-card：绿色渐变，适合成功提示

### 内联组件：

1. **metric 组件** - 数据指标卡片
   格式：<metric label="标签" value="值" icon="图标名" color="#颜色" />
   - label: 指标名称（建议用英文，更简洁）
   - value: 指标值
   - icon: Material Icons 图标名（见下方图标列表）
   - color: 图标颜色（可选，默认 #007AFF）

2. **badge 组件** - 状态徽章
   格式：<badge type="类型" icon="图标名">文本</badge>
   - type: success/info/warning/error
   - icon: Material Icons 图标名（可选）

3. **progress 组件** - 进度条
   格式：<progress value="80" label="标签" />
   - value: 0-100 的数值
   - label: 进度条说明（可选）

### 常用 Material Icons 图标：
- psychology（心理/思考）
- pending（等待/处理中）
- bolt（闪电/能量）
- favorite（喜欢/心情）
- check_circle（完成/成功）
- error（错误）
- schedule（时间）
- analytics（分析）
- insights（洞察）
- emoji_emotions（情绪）
- speed（速度）
- battery_charging_full（充电）

完整图标列表：https://fonts.google.com/icons

## 重要规则：
- ❌ 卡片内禁止使用标题标签（h1-h6）
- ✅ 使用 Material Icons 图标，不要用 emoji
- ✅ metric 的 label 建议用简短英文
- ✅ 卡片内容简洁，直接展示状态
- ✅ 可以添加一句话的纯文本说明""",
        tagType = TagType.FUNCTION,
        category = "特殊功能",
        icon = Icons.Default.Psychology
    )
)

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun TagMarketScreen(onBackPressed: () -> Unit) {
    val context = LocalContext.current
    val scope = rememberCoroutineScope()
    val promptTagManager = remember { PromptTagManager.getInstance(context) }
    var showSaveSuccessHighlight by remember { mutableStateOf(false) }
    var showCreateDialog by remember { mutableStateOf(false) }
    var selectedPreset by remember { mutableStateOf<PresetTag?>(null) }
    var newTagName by remem


381.7,1149.89 32412.7,1145.71 32443.7,1141.47 32474.6,1137.17 32505.6,1132.8 32536.6,1128.36 32567.5,1123.86 32598.5,1119.29 32629.5,1114.65 32660.4,1109.95
  32691.4,1105.17 32722.4,1100.33 32753.3,1095.41 32784.3,1090.42 32815.3,1085.36 32846.2,1080.22 32877.2,1075.01 32908.2,1069.72 32939.2,1064.35 32970.1,1058.9
  33001.1,1053.37 33032.1,1047.77 33063,1042.08 33094,1036.3 33125,1030.45 33155.9,1024.5 33186.9,1018.47 33217.9,1012.36 33248.8,1006.15 33279.8,999.851
  33310.8,993.461 33341.7,986.978 33372.7,980.401 33403.7,973.728 33434.6,966.957 33465.6,960.088 33496.6,953.119 33527.5,946.048 33558.5,938.875 33589.5,931.597
  33620.5,924.213 33651.4,916.722 33682.4,909.121 33713.4,901.411 33744.3,893.588 33775.3,885.651 33806.3,877.599 33837.2,869.429 33868.2,861.141 33899.2,852.733
  33930.1,844.202 33961.1,835.548 33992.1,826.768 34023,817.86 34054,808.823 34085,799.655 34115.9,790.353 34146.9,780.917 34177.9,771.343 34208.8,761.631
  34239.8,751.778 34270.8,741.781 34301.8,731.64 34332.7,721.352 34363.7,710.914 34394.7,700.326 34425.6,689.583 34456.6,678.685 34487.6,667.63 34518.5,656.414

  "/>
<polyline clip-path="url(#clip9102)" style="stroke:#ac8d18; stroke-width:12; stroke-opacity:1; fill:none" points="
  174.775,1437.7 205.743,1437.28 236.712,1436.8 267.68,1436.23 298.648,1435.56 329.616,1434.77 360.585,1433.85 391.553,1432.76 422.521,1431.49 453.489,1429.99
  484.457,1428.25 515.426,1426.23 546.394,1423.9 577.362,1421.23 608.33,1418.19 639.298,1414.79 670.267,1411.02 701.235,1406.91 732.203,1402.53 763.171,1397.95
  794.14,1393.28 825.108,1388.67 856.076,1384.26 887.044,1380.2 918.012,1376.64 948.981,1373.69 979.949,1371.45 1010.92,1369.96 1041.89,1369.23 1072.85,1369.23
  1103.82,1369.91 1134.79,1371.2 1165.76,1372.99 1196.73,1375.21 1227.69,1377.75 1258.66,1380.5


": "四川省",
    "520000": "贵州省",
    "530000": "云南省",
    "540000": "西藏自治区",
    "610000": "陕西省",
    "620000": "甘肃省",
    "630000": "青海省",
    "640000": "宁夏回族自治区",
    "650000": "新疆维吾尔自治区",
    "710000": "台湾省",
    "810000": "香港特别行政区",
    "820000": "澳门特别行政区"
  },
  "110000": {"110100": "市辖区"},
  "110100": {
    "110101": "东城区",
    "110102": "西城区",
    "110105": "朝阳区",
    "110106": "丰台区",
    "110107": "石景山区",
    "110108": "海淀区",
    "110109": "门头沟区",
    "110111": "房山区",
    "110112": "通州区",
    "110113": "顺义区",
    "110114": "昌平区",
    "110115": "大兴区",
    "110116": "怀柔区",
    "110117": "平谷区",
    "110118": "密云区",
    "110119": "延庆区"
  },
  "120000": {"120100": "市辖区"},
  "120100": {
    "120101": "和平区",
    "120102": "河东区",
    "120103": "河西区",
    "120104": "南开区",
    "120105": "河北区",
    "120106": "红桥区",
    "120110": "东丽区",
    "120111": "西青区",
    "120112": "津南区",
    "120113": "北辰区",
    "120114": "武清区",
    "120115": "宝坻区",
    "120116": "滨海新区",
    "120117": "宁河区",
    "120118": "静海区",
    "120119": "蓟州区"
  },
  "130000": {
    "130100": "石家庄市",
    "130200": "唐山市",
    "130300": "秦皇岛市",
    "130400": "邯郸市",
    "130500": "邢台市",
    "130600": "保定市",
    "130700": "张家口市",
    "130800": "承德市",
    "130900": "沧州市",
    "131000": "廊坊市",
    "131100": "衡水市"
  },
  "130100": {
    "130101": "市辖区",
    "130102": "长安区",
    "130104": "桥西区",
    "130105": "新华区",
    "130107": "井陉矿区",
    "130108": "裕华区",
    "130109": "藁城区"


         flag: checkTools.flag.ChkChannelAdmin,
                gid: groupid,
                role: userrole
            });
            if (rply.text) {
                return rply;
            }

            let doc = await schema.trpgLevelSystem.findOne({
                groupid: groupid
            }).catch(error => console.error('level_system #262 mongoDB error:', error.name, error.reason));

            if (!doc) {
                doc = new schema.trpgLevelSystem({
                    groupid: groupid
                });
            }

            doc.LevelUpWord = "";
            await doc.save().catch(error => console.error('level_system #264 mongoDB error:', error.name, error.reason));
            rply.text = "刪除升級語成功."
            return rply;
        }
        case /(^[.]level$)/i.test(mainMsg[0]) && /^LevelUpWord$/i.test(mainMsg[1]): {
            rply.text = checkTools.permissionErrMsg({
                flag: checkTools.flag.ChkChannelAdmin,
                gid: groupid,
                role: userrole
            });
            if (rply.text) {
                return rply;
            }

            // Check if there's any input to process
            if (!mainMsg[2]) {
                rply.text = '請提供升級通知文字，格式為 \n.level LevelUpWord [內容]\n可使用的關鍵字有: {user.name}, {user.displayName}, {user.level}, {user.title}, {user.exp}, {user.Ranking}, {user.RankingPer}, {server.member_count}';
                return rply;
            }

            let doc = await schema.trpgLevelSystem.findOne({
                groupid: groupid
            }).catch(error => console.error('level_system #280 mongoDB error:', error.name, error.reason));

            if (!doc) {
                doc = new schema.trpgLevelSystem({
                    groupid: groupid
                });
            }

            doc.LevelUpWord = inputStr.replace(/\s?.*\s+\w+\s+/i, '');
            await doc.save().catch(error => console.error('level_system #282 mongoDB error:', error.name, error.reason));
            rply.text = "新增升級語成功.\n" + inputStr.replace(/\s?.*\s+\w+\s+/i, '');

            return rply;
        }
        case /(^[.]level$)/i.test(mainMsg[0]) && /^RankWord$/i.test(mainMsg[1]) && /^Show$/i.test(mainMsg[2]): {
            if (!groupid) {
                rply.text = '新增失敗。你不在群組當中，請在群組中使用。'
                return rply
            }
            let doc = await schema.trpgLevelSystem.findOne({
                groupid: groupid
            }).catch(error => console.error('level_system #294 mongoDB error:', error.name, error.reason));
            if (!doc || !doc.RankWord) {
                rply.text = '正在使用預設查詢語. ';
                return rply;
            }
            rply.text = '現在查詢語:';
            rply.text += ("\n") + doc.RankWord;
            return rply;
        }
        case /(^[.]level$)/i.test(mainMsg[0]) && /^RankWord$/i.test(mainMsg[1]) && /^del$/i.test(mainMsg[2]): {
            rply.text = checkTools.permissionErrMsg({
                flag: checkTools.flag.ChkChannelAdmin,
                gid: groupid,
                role: user


 to create
/// a zip of the CLI and its dependencies for the current platform.
Future<void> main(List<String> args) async {
  final argParser =
      ArgParser()
        ..addOption('target-os', allowed: ['linux'], defaultsTo: hostOs)
        ..addMultiOption(
          'target-arch',
          allowed: ['arm64', 'x64'],
          defaultsTo: [hostArch],
        );
  final argResults = argParser.parse(args);

  final targetOs = argResults.option('target-os')!;
  final targetArchs = argResults.multiOption('target-arch');

  final artifacts = <String>[];
  for (final targetArch in targetArchs) {
    final artifact = await _build(targetOs: targetOs, targetArch: targetArch);
    artifacts.add(artifact);
  }

  if (platform.environment['GITHUB_OUTPUT'] case final ciOutput?) {
    fileSystem
        .file(ciOutput)
        .writeAsStringSync(
          [
            'version=$version',
            'artifacts<<EOF',
            ...artifacts,
            'EOF',
          ].join('\n'),
          mode: FileMode.append,
          flush: true,
        );
  }
}

Future<String> _build({
  required String targetOs,
  required String targetArch,
}) async {
  print('Bundling CLI version $version for $targetOs-$targetArch...');

  if (buildDir.existsSync()) {
    buildDir.deleteSync(recursive: true);
  }
  await buildDir.create(recursive: true);
  await _runProcess('dart', [
    if (currentSha case final currentSha?) '--define=gitSha=$currentSha',
    '--define=version=$version',
    'compile',
    'exe',
    if (targetOs != hostOs || targetArch != hostArch) ...[
      '--target-os=$targetOs',
      '--target-arch=$targetArch',
      '--experimental-cross-compilation',
    ],
    '--output=$buildPath/celest.exe',
    'bin/celest.dart',
  ], workingDirectory: platform.script.resolve('..').toFilePath());
  if (!buildDir.existsSync()) {
    throw StateError('Build directory does not exist');
  }

  if (!platform.isWindows) {
    final exeUri = platform.script.resolve('../$buildPath/celest.exe');
    final exe = fileSystem.file(exeUri);
    final destExe = p.withoutExtension(p.absolute(exeUri.path));
    if (!exe.existsSync() && !fileSystem.file(destExe).existsSync()) {
      throw StateError('Executable does not exist: $exe');
    }
    exe.renameSync(destExe);
  }

  final bundler = switch (targetOs) {
    'linux' => LinuxDebBundler(arch: targetArch),
    _ => throw UnsupportedError('Unsupported OS: $targetOs'),
  };

  print('Bundling with ${bundler.runtimeType}...');
  await bundler.bundle();

  print('Successfully wrote ${bundler.outputFilepath}');
  return bundler.outputFilepath;
}

abstract class Bundler {
  String get os;
  String get arch;
  String get extension;

  /// The path to the output file, dependent on the OS/arch.
  String get outputFilepath =>
      p.join(outputsDir.path, 'celest_cli-$os-$arch.$extension');

  /// The directory to use for temporary (non-bundled) files.
  final Directory tempDir = fileSystem.systemTempDirectory.createTempSync(
    'celest_build_',
  );

  /// Bundles the CLI and its dependencies into a single file, performing
  /// code signing and notarization as needed.
  Future<void> bundle();
}

final class LinuxArchiveBundler extends Bundler {
  LinuxArchiveBundler({required this.arch});

  @override
  String get os => 'linux';

  @override
  final String arch;


: yellow ?? this.yellow,
      teal: teal ?? this.teal,
      lavender: lavender ?? this.lavender,
      maroon: maroon ?? this.maroon,
      sky: sky ?? this.sky,
      peach: peach ?? this.peach,
    );
  }

  @override
  LogColors lerp(LogColors? other, double t) {
    if (other is! LogColors) {
      return this;
    }
    return LogColors(
      text: Color.lerp(text, other.text, t) ?? text,
      blue: Color.lerp(blue, other.blue, t) ?? blue,
      red: Color.lerp(red, other.red, t) ?? red,
      green: Color.lerp(green, other.green, t) ?? green,
      yellow: Color.lerp(yellow, other.yellow, t) ?? yellow,
      teal: Color.lerp(teal, other.teal, t) ?? teal,
      lavender: Color.lerp(lavender, other.lavender, t) ?? lavender,
      maroon: Color.lerp(maroon, other.maroon, t) ?? maroon,
      sky: Color.lerp(sky, other.sky, t) ?? sky,
      peach: Color.lerp(peach, other.peach, t) ?? peach,
    );
  }

  List<Color> getTheme() {
    return [text, blue, red, green, yellow, teal, lavender, maroon, sky, peach];
  }
}

/// [lightTheme] defines the light theme for the app.
final lightTheme = ThemeData(
  useMaterial3: true,
  colorScheme: ColorScheme(
    brightness: Brightness.light,
    primary: const Color(0xff326ce5),
    onPrimary: Colors.white,
    secondary: const Color(0xff326ce5),
    onSecondary: Colors.white,
    error: catppuccin.latte.red,
    onError: Colors.white,
    surface: catppuccin.latte.base,
    onSurface: catppuccin.latte.text,
  ),
  canvasColor: catppuccin.latte.base,
  appBarTheme: const AppBarTheme(
    backgroundColor: Color(0xff326ce5),
    foregroundColor: Colors.white,
    elevation: 0,
  ),
  snackBarTheme: SnackBarThemeData(
    backgroundColor: catppuccin.latte.base,
    contentTextStyle: TextStyle(color: catppuccin.latte.text),
  ),
  dialogTheme: DialogThemeData(
    backgroundColor: catppuccin.latte.base,
    surfaceTintColor: catppuccin.latte.base,
    contentTextStyle: TextStyle(color: catppuccin.latte.text),
  ),
  popupMenuTheme: PopupMenuThemeData(
    color: catppuccin.latte.base,
    surfaceTintColor: catppuccin.latte.base,
    textStyle: TextStyle(color: catppuccin.latte.text),
  ),
  drawerTheme: DrawerThemeData(
    backgroundColor: catppuccin.latte.base,
    surfaceTintColor: catppuccin.latte.base,
  ),
  bottomSheetTheme: BottomSheetThemeData(
    backgroundColor: catppuccin.latte.base,
    surfaceTintColor: catppuccin.latte.base,
  ),
  dividerColor: catppuccin.latte.crust,
  dividerTheme: DividerThemeData(color: catppuccin.latte.crust),
  pageTransitionsTheme: const PageTransitionsTheme(
    builders: {
      TargetPlatform.android: CupertinoPageTransitionsBuilder(),
      TargetPlatform.iOS: CupertinoPageTransitionsBuilder(),
    },
  ),
  highlightColo


rimer ce fichier ?')">
                      <input type="hidden" name="key" value="{{ full_key }}" />
                      <button class="file_delete">Supprimer</button>
                  </form>
                  {% endif %}

            {% else %}

Aucun fichier.

            {% endfor %}

    {% if role in ['admin', 'user'] %}

Uploader des fichiers ici

Glisser-déposer vos fichiers ou dossiers ici pour les uploader

    {% else %}

Uploader des fichiers ici

Seuls les utilisateurs connectés peuvent uploader des fichiers.

    {% endif %}

    {% if role == 'admin' %}

Outils d'administration

          <button type="button">➕ Créer un nouvel admin</button>

          <button type="button">Gestion des utilisateurs</button>

            <button type="button">Voir journal global</button>

    {% endif %}

    {% if role in ['admin', 'user'] %}

Gestion de votre compte

              <button type="button" class="delete_account_button" style="margin: 10px;">Supprimer votre compte</button>

              <button type="button">Changer votre mot de passe</button>

              <button type="button">Changer votre identifiant</button>

              <button type="button">Voir mon journal</button>

    {% endif %}


构造函数中设置默认值">在我的构造函数中设置默认值

在构造函数中为属性设置默认值的方式与典型的C++类一样。下面是两个在构造函数中设置默认值的示例，它们在功能上是等效的。

AMyActor::AMyActor()
{
    TotalDamage = 200;
    DamageTimeInSeconds = 1.0f;
}

AMyActor::AMyActor() :
    TotalDamage(200),
    DamageTimeInSeconds(1.0f)
{
}

这是在构造函数中添加默认值后的相同属性视图。

<picture>
		<source data-srcset="./../../../../Images/ProgrammingAndScripting/ProgrammingWithCPP/IntroductionToCPP/image_4.jpg">

</picture>

为了按实例支持设计师设置属性，还会从给定对象的实例数据加载值。该数据在构造函数之后应用。您可以根据设计师设置值创建默认值，方法是钩入 PostInitProperties() 调用链中。下面示例展示了 TotalDamage 和 DamageTimeInSeconds 为设计师指定值的流程。尽管它们是设计师指定的，但您仍可以为它们提供合理的默认值，就像上述示例一样。

如果您不提供属性的默认值，引擎会自动将该属性设置为0或空指针（如果是指针类型）。

void AMyActor::PostInitProperties()
{
    Super::PostInitProperties();
    DamagePerSecond = TotalDamage / DamageTimeInSeconds;
}

这里同样是添加了上述 PostInitProperties() 代码后的属性视图。

<picture>
		<source data-srcset="./../../../../Images/ProgrammingAndScripting/ProgrammingWithCPP/IntroductionToCPP/image_5.jpg">

</picture>

热重载

虚幻有一个非常帮的功能，如果您已习惯于在其他项目中进行C++编程，可能会对这个功能感到惊奇。您不必关闭编辑器就可以编译C++更改！有两种方法可以达到这个目的：

在编辑器继续运行的情况下启用该功能，并像正常操作那样通过Visual Studio或Xcode构建。编辑器会检测出新编译的DLL，并立即加载修改！

<picture>
		<source data-srcset="./../../../../Images/ProgrammingAndScripting/ProgrammingWithCPP/IntroductionToCPP/image_6.jpg">
		<img class="  lazyloa


densities_[__k + 1];
  const result_type __deltad = __dk1 - __dk;
  const result_type __bk     = __p.__b_[__k];
  if (__deltad == 0)
    return __u / __dk + __bk;
  const result_type __bk1    = __p.__b_[__k + 1];
  const result_type __deltab = __bk1 - __bk;
  return (__bk * __dk1 - __bk1 * __dk + std::sqrt(__deltab * (__deltab * __dk * __dk + 2 * __deltad * __u))) / __deltad;
}

template <class _CharT, class _Traits, class _RT>
_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os, const piecewise_linear_distribution<_RT>& __x) {
  __save_flags<_CharT, _Traits> __lx(__os);
  typedef basic_ostream<_CharT, _Traits> _OStream;
  __os.flags(_OStream::dec | _OStream::left | _OStream::fixed | _OStream::scientific);
  _CharT __sp = __os.widen(' ');
  __os.fill(__sp);
  size_t __n = __x.__p_.__b_.size();
  __os << __n;
  for (size_t __i = 0; __i < __n; ++__i)
    __os << __sp << __x.__p_.__b_[__i];
  __n = __x.__p_.__densities_.size();
  __os << __sp << __n;
  for (size_t __i = 0; __i < __n; ++__i)
    __os << __sp << __x.__p_.__densities_[__i];
  __n = __x.__p_.__areas_.size();
  __os << __sp << __n;
  for (size_t __i = 0; __i < __n; ++__i)
    __os << __sp << __x.__p_.__areas_[__i];
  return __os;
}

template <class _CharT, class _Traits, class _RT>
_LIBCPP_HIDE_FROM_ABI basic_istream<_CharT, _Traits>&
operator>>(basic_istream<_CharT, _Traits>& __is, piecewise_linear_distribution<_RT>& __x) {
  typedef piecewise_linear_distribution<_RT> _Eng;
  typedef typename _Eng::result_type result_type;
  __save_flags<_CharT, _Traits> __lx(__is);
  typedef basic_istream<_CharT, _Traits> _Istream;
  __is.flags(_Istream::dec | _Istream::skipws);
  size_t __n;
  __is >> __n;
  vector<result_type> __b(__n);
  for (size_t __i = 0; __i < __n; ++__i)
    __is >> __b[__i];
  __is >> __n;
  vector<result_type> __densities(__n);
  for (size_t __i = 0; __i < __n; ++__i)
    __is >> __densities[__i];
  __is >> __n;
  vector<result_type> __areas(__n);
  for (size_t __i = 0; __i < __n; ++__i)
    __is >> __areas[__i];
  if (!__is.fail()) {
    swap(__x.__p_.__b_, __b);
    swap(__x.__p_.__densities_, __densities);
    swap(__x.__p_.__areas_, __areas);
  }
  return __is;
}

_LIBCPP_END_NAMESPACE_STD

_LIBCPP_POP_MACROS

#endif // _LIBCPP___RANDOM_PIECEWISE_LINEAR_DISTRIBUTION_H


2ffc00 0xc4045601  ... V ......
  2ffc01 0x00000000  ............  ABSF  R0, R0
  2ffc02 0x000003b8  ............  ABSF  R<illegal>
  2ffc03 0x15610302  ...... a ...  STIK  1,  *+AR3(2)
  2ffc04 0x085d0301  ...... ] ...  LDI   *+AR3(1), R9
  2ffc05 0x08750000  ...... u ...  LDI   0, ST
  2ffc06 0x1a7d0020     ... } ...  TSTB  0x20, R9
  2ffc07 0x6a060001  ......... j   Bne   +1             (branch to 2ffc09)
  2ffc08 0x10750800  ...... u ...  OR    0x800, ST
  2ffc09 0x1a7d0008  ...... } ...  TSTB  0x8, R9
  2ffc0a 0x6a060004  ......... j   Bne   +4             (branch to 2ffc0f)
  2ffc0b 0x08606000  ... `  ` ...  LDI   0x6000, R0
  2ffc0c 0x08180000  ............  LDI   R0, IIF
  2ffc0d 0x1fe90010  ............  LDHI  0x10, AR1
  2ffc0e 0x10690020     ... i ...  OR    0x20, AR1
  2ffc0f 0x1a7d0018  ...... } ...  TSTB  0x18, R9
  2ffc10 0x6a050008  ......... j   Beq   +8             (branch to 2ffc19)
  2ffc11 0x08410301  ...... A ...  LDI   *+AR3(1), R1
  2ffc12 0x37000102  ......... 7   SUBI3 2, R1, R0
  2ffc13 0x1fec002f   / .........  LDHI  0x2f, AR4
  2ffc14 0x106cf800  ...... l ...  OR    0xf800, AR4
  2ffc15 0x139b0000  ............  RPTS  R0
  2ffc16 0xda412403  ... $  A ...  LDI   *+AR3(1), R1
                                || STI   R1,  *AR4++(1)
  2ffc17 0x15412401  ... $  A ...  STI   R1,  *AR4++(1)
  2ffc18 0x6a000049   I ...... j   Bu    +73            (branch to 2ffc62)
  2ffc19 0x1fea7000  ... p ......  LDHI  0x7000, AR2
  2ffc1a 0x0840c100  ...... @ ...  LDI   *AR1, R0
  2ffc1b 0x1562c100  ...... b ...  STIK  2,  *AR1
  2ffc1c 0x086107d0  ...... a ...  LDI   0x7d0, R1
  2ffc1d 0x18610001  ...... a ...  SUBI  1, R1
  2ffc1e 0x6a06fffe  ......... j   Bne   -2             (branch to 2ffc1d)
  2ffc1f 0x1566c100  ...... f ...  STIK  6,  *AR1
  2ffc20 0x086107d0  ...... a ...  LDI   0x7d0, R1
  2ffc21 0x18610001  ...... a ...  SUBI  1, R1
  2ffc22 0x6a06fffe  ......... j   Bne   -2             (branch to 2ffc21)
  2ffc23 0x1562c100  ...... b ...  STIK  2,  *AR1
  2ffc24 0x086107d0  ...... a ...  LDI


t(uint64(l))
	}
	if m.SchemaID != 0 {
		n += 1 + sovHeartbeat(uint64(m.SchemaID))
	}
	if m.Mode != 0 {
		n += 1 + sovHeartbeat(uint64(m.Mode))
	}
	return n
}

func (m *ScheduleDispatcherRequest) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	if m.ChangefeedID != nil {
		l = m.ChangefeedID.Size()
		n += 1 + l + sovHeartbeat(uint64(l))
	}
	if m.Config != nil {
		l = m.Config.Size()
		n += 1 + l + sovHeartbeat(uint64(l))
	}
	if m.ScheduleAction != 0 {
		n += 1 + sovHeartbeat(uint64(m.ScheduleAction))
	}
	return n
}

func (m *MergeDispatcherRequest) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	if m.ChangefeedID != nil {
		l = m.ChangefeedID.Size()
		n += 1 + l + sovHeartbeat(uint64(l))
	}
	if len(m.DispatcherIDs) > 0 {
		for _, e := range m.DispatcherIDs {
			l = e.Size()
			n += 1 + l + sovHeartbeat(uint64(l))
		}
	}
	if m.MergedDispatcherID != nil {
		l = m.MergedDispatcherID.Size()
		n += 1 + l + sovHeartbeat(uint64(l))
	}
	if m.Mode != 0 {
		n += 1 + sovHeartbeat(uint64(m.Mode))
	}
	return n
}

func (m *MaintainerHeartbeat) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	if len(m.Statuses) > 0 {
		for _, e := range m.Statuses {
			l = e.Size()
			n += 1 + l + sovHeartbeat(uint64(l))
		}
	}
	return n
}

func (m *MaintainerStatus) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	if m.ChangefeedID != nil {
		l = m.ChangefeedID.Size()
		n += 1 + l + sovHeartbeat(uint64(l))
	}
	l = len(m.FeedState)
	if l > 0 {
		n += 1 + l + sovHeartbeat(uint64(l))
	}
	if m.State != 0 {
		n += 1 + sovHeartbeat(uint64(m.State))
	}
	if m.CheckpointTs != 0 {
		n += 1 + sovHeartbeat(uint64(m.CheckpointTs))
	}
	if len(m.Err) > 0 {
		for _, e := range m.Err {
			l = e.Size()
			n += 1 + l + sovHeartbeat(uint64(l))
		}
	}
	if m.BootstrapDone {
		n += 2
	}
	return n
}

func (m *CoordinatorBootstrapRequest) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	if m.Version != 0 {
		n += 1 + sovHeartbeat(uint64(m.Version))
	}
	return n
}

func (m *CoordinatorBootstrapResponse) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	if len(m.Statuses) > 0 {
		for _, e := range m.Statuses {
			l = e.Size()
			n += 1 + l + sov


801.428 1.248.263.405.629.741 1.096 1.003.648.346 1.45.519 2.404.519.79 0 1.49-.122 2.1-.365.609-.284 1.055-.639 1.339-1.065.304-.467.456-.975.456-1.522 0-.445-.08-.852-.242-1.217-.163-.304-.416-.578-.762-.82a5.854 5.854 0 00-1.156-.548 22.257 22.257 0 00-1.461-.396 5.869 5.869 0 01-.533-.107l-.41-.106a2.897 2.897 0 01-.518-.212 1.053 1.053 0 01-.396-.336.527.527 0 01-.152-.396c0-.243.142-.455.426-.639.265-.203.649-.305 1.156-.305.508 0 .884.092 1.127.273.263.225.456.478.577.762.163.264.295.446.396.547a.929.929 0 00.578.184.954.954 0 00.699-.306.9.9 0 00.275-.669c0-.202-.072-.467-.214-.791a4.128 4.128 0 00-.639-.729c-.284-.224-.659-.417-1.127-.579a5.47 5.47 0 00-1.552-.213c-.73 0-1.38.11-1.948.335-.566.2-1.003.505-1.307.911a2.267 2.267 0 00-.457 1.4c0 .527.143.984.426 1.37.346.405.73.688 1.156.851.488.224 1.076.407 1.766.548.121.021.27.056.441.106l.457.123.319.075c.284.103.517.243.699.427.183.141.274.354.274.639 0 .346-.162.629-.486.853-.364.243-.821.364-1.369.364M8.865 3c-1.609 0-3.053.61-4.174 1.765C3.586 5.899 3 7.35 3 8.957c0 .832.156 1.619.466 2.348a8.15 8.15 0 00-.07 1.062c0 2.438.853 4.547 2.532 6.267 1.693 1.732 3.768 2.61 6.164 2.61.254 0 .547-.02.896-.06.69.283 1.409.426 2.146.426 1.588 0 3.025-.614 4.157-1.777A5.912 5.912 0 0021 15.622c0-.677-.111-1.349-.332-2.004a9.16 9.16 0 00.089-1.251c0-2.437-.846-4.544-2.513-6.263-1.685-1.735-3.755-2.615-6.152-2.615a8.21 8.21 0 00-.801.038A5.717 5.717 0 008.865 3z"/></svg>';
  static const String social_tumbler =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path fill="currentColor" d="M15.527 17.921v-2.066c-.669.448-1.32.67-1.952.67-.298 0-.631-.094-1.004-.277-.223-.151-.354-.317-.393-.503-.11-.224-.178-.708-.178-1.454V11h3V9h-3V5.644h-1.772c-.149.782-.298 1.338-.448 1.673-.184.41-.482.782-.891 1.116a4 4 0 01-1.285.725V11H9v4.521c0 .52.073.964.223 1.337.111.298.334.595.671.893.259


itle>paper-input</title>

  <link href="../font-roboto/roboto.html" rel="import">
  <link href="paper-input.html" rel="import">

    <paper-input label="Type something..."></paper-input>

    <paper-input label="Type only numbers..." validate="^[0-9]*$" error="Input is not a number!"></paper-input>

    <paper-input disabled label="I'm disabled"></paper-input>

    <paper-input floatingLabel label="Floating label"></paper-input>

    <paper-input floatingLabel label="Type only numbers... (floating)" validate="^[0-9]*$" error="Input is not a number!"></paper-input>

    <paper-input multiline label="Type multiple lines here..."></paper-input>

    <paper-input multiline rows="3" label="This input is 3 rows high"></paper-input>

    <paper-input multiline maxRows="3" label="This input is at most 3 rows high"></paper-input>

    <paper-input multiline floatingLabel label="Multiple lines and a floating label"></paper-input>

<!DOCTYPE html>

  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, user-scalable=no">
  <meta name="description" content="API docs for the IF_RANGE constant from the HttpHeaders class, for the Dart programming language.">
  <title>IF_RANGE constant - HttpHeaders class - dart:io library - Dart API</title>

  <base href="../..">

  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:500,400i,400,300|Source+Sans+Pro:400,300,700" rel="stylesheet">
  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
  <link rel="stylesheet" href="static-assets/github.css">
  <link rel="stylesheet" href="static-assets/styles.css">
  <link rel="icon" href="static-assets/favicon.png">

  <button id="sidenav-left-toggle" type="button"> </button>

pin_code_fields

dart:io

HttpHeaders

IF_RANGE constant</


NCPSubCommand
import net.catrainbow.nocheatplus.components.data.ConfigData

class UnBanCommand : NCPSubCommand("unban") {
    override fun getDescription(): String {
        return "(player) Unban a player"
    }

    override fun getAliases(): Array<String> {
        return arrayOf("unban")
    }

    override fun execute(sender: CommandSender, label: String, args: Array<out String>): Boolean {
        if (args.size < 2) {
            sender.sendMessage("${ConfigData.logging_prefix}Player is not banned!")
            return true
        }
        val playerName = args[1]
        if (NoCheatPlus.instance.getNCPBanRecord().exists(playerName)) {
            val config = NoCheatPlus.instance.getNCPBanRecord()
            config.remove(playerName)
            config.save(true)
            sender.sendMessage("${ConfigData.logging_prefix}Unban player successfully!")
        } else sender.sendMessage("${ConfigData.logging_prefix}Player $playerName is not banned!")
        return true
    }
}/*
 * This program is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in thCut even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package net.catrainbow.nocheatplus.feature.moving

import cn.nukkit.event.Event
import cn.nukkit.event.player.PlayerMoveEvent
import cn.nukkit.level.Position
import net.catrainbow.nocheatplus.NoCheatPlus
import net.catrainbow.nocheatplus.checks.moving.model.DistanceData
import net.catrainbow.nocheatplus.feature.ITickListener

/**
 * 移动数据处理、
 *
 * @author Catrainbow
 */
class MovingDataListener : ITickListener {

    override fun onTick(event: Event) {

        //更新数据
        if (event is PlayerMoveEvent) {
            val player = event.player
            val distanceData = DistanceData(Position.fromObject(event.from), Position.fromObject(event.to))
            NoCheatPlus.instance.getPlayerProvider(player).movingData.handleMovingData(
                player, event.from, event.to, distanceData
            )
        }
    }

    override fun onEnabled() {

    }

    override fun onDisabled() {
    }
}/*
 * This program is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in thCut even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package net.catrainbow.nocheatplus.checks.inventory

import net.catrainbow.nocheatplus.NoCheatPlus
import net.catrainbow.nocheatplus.checks.Check
import net.catrainbow.nocheatplus.checks.CheckType
import net.catrainbow.nocheatplus.compat.Bridge118.Companion.setback
import net.catrainbow.nocheatplus.feature.wrapper.WrapperInputPacket
import net.catrain


succeeded.3313"));
                            }
                        } catch (Exception e) {
                            log.error(I18nMessageUtil.get("i18n.ssh_folder_creation_exception.6ed2"), e);
                            return new JsonMessage<>(500, I18nMessageUtil.get("i18n.create_folder_failure.b632") + e.getMessage());
                        }
                    }
                    List<String> result = new ArrayList<>();
                    JschUtils.execCallbackLine(session, charset, timeout, command.toString(), StrUtil.EMPTY, result::add);

                    return JsonMessage.success(I18nMessageUtil.get("i18n.operation_succeeded_with_details.c773") + CollUtil.join(result, StrUtil.LF));
                } catch (IOException e) {
                    throw Lombok.sneakyThrow(e);
                }
            } finally {
                JschUtil.close(session);
            }
        });
    }

    /**
     * 修改文件权限
     *
     * @param id
     * @param allowPathParent
     * @param nextPath
     * @param fileName
     * @param permissionValue
     * @return
     */
    @RequestMapping(value = "change_file_permission.json", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
    @Feature(method = MethodFeature.EDIT)
    public IJsonMessage<JSONArray> changeFilePermissions(@ValidatorItem String id,
                                                         @ValidatorItem String allowPathParent,
                                                         @ValidatorItem String nextPath,
                                                         @ValidatorItem String fileName,
                                                         @ValidatorItem String permissionValue) {
        MachineSshModel machineSshModel = this.checkConfigPathChildren(id, allowPathParent, nextPath, (machineSshModel1, itemConfig) -> machineSshModel1);
        if (machineSshModel == null) {
            return new JsonMessage<>(400, I18nMessageUtil.get("i18n.ssh_error_or_folder_not_configured.c087"));
        }
        Session session = sshService.getSessionByModel(machineSshModel);
        Charset charset = machineSshModel.charset();
        int timeout = machineSshModel.timeout();
        String remotePath = FileUtil.normalize(allowPathParent + StrUtil.SLASH + nextPath + StrUtil.SLASH + fileName);
        try (Sftp sftp = new Sftp(session, charset, timeout)) {
            ChannelSftp client = sftp.getClient();
            //
            int permissions = Integer.parseInt(permissionValue, 8);
            client.chmod(permissions, remotePath);
        } catch (SftpException e) {
            log.error(I18nMessageUtil.get("i18n.ssh_modify_permission_error.0cd3"), remotePath, permissionValue, e);
            return new JsonMessage<>(400, I18nMessageUtil.get("i18n.operation_failed.3d94") + e.getMessage());
        }
        return JsonMessage.success(I18nMessageUtil.get("i18n.operation_succeeded.3313"));
    }
}
/*
 * Copyright (c) 2019 Of Him Code Technology Studio
 * Jpom is licensed under Mulan PSL v2.
 * You can use this software according to the terms and conditions of the Mulan PSL v2.
 * You may obtain a copy of Mulan PSL v2 at:
 * 			http://license.coscl.org.cn/MulanPSL2
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PSL v2 for more details.
 */
package org.dromara.jpom.controller.user;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Tuple;
import cn.hutool.core.util.StrUtil;
import cn.


lished.".

	})

	t.Run("There can be only One", func(t *testing.T) {
		t.Parallel()

		type backgroundData struct{}

		background := func(t *testing.T) backgroundData {
			t.Helper()

			// Given I have overdue tasks.

			return backgroundData{}
		}

		t.Run("Only One -- One alive", func(t *testing.T) {
			t.Parallel()

			_ = background(t)

			// Given there is only 1 ninja alive.

			// Then he (or she) will live forever ;-).

		})
	})
}
// Code generated by entc, DO NOT EDIT.

package ent

import (
	"fmt"
	"strings"

	"entgo.io/ent/dialect/sql"
	"github.com/hedwigz/entviz/examples/ent/post"
	"github.com/hedwigz/entviz/examples/ent/user"
)

// Post is the model entity for the Post schema.
type Post struct {
	config
	// ID of the ent.
	ID int `json:"id,omitempty"`
	// Edges holds the relations/edges for other nodes in the graph.
	// The values are being populated by the PostQuery when eager-loading is set.
	Edges      PostEdges `json:"edges"`
	user_posts *int
}

// PostEdges holds the relations/edges for other nodes in the graph.
type PostEdges struct {
	// Author holds the value of the author edge.
	Author *User `json:"author,omitempty"`
	// loadedTypes holds the information for reporting if a
	// type was loaded (or requested) in eager-loading or not.
	loadedTypes [1]bool
}

// AuthorOrErr returns the Author value or an error if the edge
// was not loaded in eager-loading, or loaded but was not found.
func (e PostEdges) AuthorOrErr() (*User, error) {
	if e.loadedTypes[0] {
		if e.Author == nil {
			// The edge author was loaded in eager-loading,
			// but was not found.
			return nil, &NotFoundError{label: user.Label}
		}
		return e.Author, nil
	}
	return nil, &NotLoadedError{edge: "author"}
}

// scanValues returns the types for scanning values from sql.Rows.
func (*Post) scanValues(columns []string) ([]interface{}, error) {
	values := make([]interface{}, len(columns))
	for i := range columns {
		switch columns[i] {
		case post.FieldID:
			values[i] = new(sql.NullInt64)
		case post.ForeignKeys[0]: // user_posts
			values[i] = new(sql.NullInt64)
		default:
			return nil, fmt.Errorf("unexpected column %q for type Post", columns[i])
		}
	}
	return values, nil
}

// assignValues assigns the values that were returned from sql.Rows (after scanning)
// to the Post fields.
func (po *Post) assignValues(columns []string, values []interface{}) error {
	if m, n := len(values), len(columns); m < n {
		return fmt.Errorf("mismatch number of scan values: %d != %d", m, n)
	}
	for i := range columns {
		switch columns[i] {
		case post.FieldID:
			value, ok := values[i].(*sql.NullInt64)
			if !ok {
				return fmt.Errorf("unexpected type %T for field id", value)
			}
			po.ID = int(value.Int64)
		case post.ForeignKeys[0]:
			if value, ok := values[i].(*sql.NullInt64); !ok {
				return fmt.Errorf("unexpected type %T for edge-field user_posts", value)
			} else if value.Valid {
				po.user_posts = new(int)
				*po.user_posts = int(value.Int64)
			}
		}
	}
	return nil
}


/**
 * Symbol.hasInstance
方法，会被instanceof运算符调用。构造器对象用来识别一个对象是否是其实例。

Symbol.isConcatSpreadable
布尔值，表示当在一个对象上调用Array.prototype.concat时，这个对象的数组元素是否可展开。

Symbol.iterator
方法，被for-of语句调用。返回对象的默认迭代器。

Symbol.match
方法，被String.prototype.match调用。正则表达式用来匹配字符串。

Symbol.replace
方法，被String.prototype.replace调用。正则表达式用来替换字符串中匹配的子串。

Symbol.search
方法，被String.prototype.search调用。正则表达式返回被匹配部分在字符串中的索引。

Symbol.species
函数值，为一个构造函数。用来创建派生对象。

Symbol.split
方法，被String.prototype.split调用。正则表达式来用分割字符串。

Symbol.toPrimitive
方法，被ToPrimitive抽象操作调用。把对象转换为相应的原始值。

Symbol.toStringTag
方法，被内置方法Object.prototype.toString调用。返回创建对象时默认的字符串描述。

Symbol.unscopables
对象，它自己拥有的属性会被with作用域排除在外。
 */

import { CalendarItem } from "./CalendarItem";
import { CalendarUtility } from "./CalendarUtility";

export const data: CalendarItem[] = [
    new CalendarItem("foo1", new Date('2021-04-03T08:00:00'), new Date('2021-04-03T10:00:00')),
    new CalendarItem("foo2", new Date('2021-04-02T08:00:00'), new Date('2021-04-04T10:00:00')),
    new CalendarItem("foo3", new Date('2021-04-05T08:00:00'), new Date('2021-04-05T10:00:00')),
    new CalendarItem("bar1", new Date('2021-05-03T08:00:00'), new Date('2021-05-03T10:00:00')),
    new CalendarItem("bar2", new Date('2021-05-02T08:00:00'), new Date('2021-05-04T10:00:00')),
    new CalendarItem("bar3", new Date('2021-05-05T08:00:00'), new Date('2021-05-05T10:00:00')),
    new CalendarItem("baz1", new Date('2021-06-03T08:00:00'), new Date('2021-06-03T10:00:00')),
    new CalendarItem("baz2", new Date('2021-06-02T08:00:00'), new Date('2021-06-04T10:00:00')),
    new CalendarItem("baz3", new Date('2021-06-05T08:00:00'), new Date('2021-06-05T10:00:00')),
    new CalendarItem("baz4", new Date('2021-06-10T23:59:59'), new Date('2021-06-11T00:00:01')),
];

export const dataByKey: any = {};

for (let i = 0; i < data.length; i++) {
    const item = data[i];

    if (item.dtStart >= item.dtEnd) {
        console.warn("start must be before end!", item);
    }

    let dtIteration = new Date(item.dtStart);
    dtIteration.setHours(0);
    dtIteration.setMinutes(0);
    dtIteration.setSeconds(0);
    while (dtIteration < item.dtEnd) {
        const key = CalendarUtility.dateKey(dtIteration);
        if (dataByKey[key] === undefined) {
            dataByKey[key] = [] as CalendarItem[];
        }

        dataByKey[key].push(item);

        dtIteration.setDate(dtIteration.getDate() + 1);
    }
}import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class ListService {
  list = JSON.parse(loc


.value = 0x4321;
            half3 h1; h1.x.value = 0x7BFF; h1.y.value = 0x7C00; h1.z.value = 0x7C00;
            half3 h2; h2.x.value = 0x7C01; h2.y.value = 0x7C01; h2.z.value = 0x7C01;

            half3 h3; h3.x.value = 0x8000; h3.y.value = 0x8203; h3.z.value = 0xC321;
            half3 h4; h4.x.value = 0xFBFF; h4.y.value = 0xFC00; h4.z.value = 0xFC00;
            half3 h5; h5.x.value = 0xFC01; h5.y.value = 0xFC01; h5.z.value = 0xFC01;

            TestUtils.AreEqual(uint3(0x00000000, 0x3800C000, 0x40642000), asuint(h0));
            TestUtils.AreEqual(uint3(0x477FE000, 0x7F800000, 0x7F800000), asuint(h1));
            TestUtils.AreEqual(true, all(isnan(h2)));

            TestUtils.AreEqual(uint3(0x80000000, 0xB800C000, 0xC0642000), asuint(h3));
            TestUtils.AreEqual(uint3(0xC77FE000, 0xFF800000, 0xFF800000), asuint(h4));
            TestUtils.AreEqual(true, all(isnan(h5)));
        }

        [TestCompiler]
        public static void half4_to_float4()
        {
            half4 h0; h0.x.value = 0x0000; h0.y.value = 0x0203; h0.z.value = 0x4321; h0.w.value = 0x7BFF;
            half4 h1; h1.x.value = 0x7C00; h1.y.value = 0x7C00; h1.z.value = 0x7C00; h1.w.value = 0x7C00;
            half4 h2; h2.x.value = 0x7C01; h2.y.value = 0x7C01; h2.z.value = 0x7C01; h2.w.value = 0x7C01;

            half4 h3; h3.x.value = 0x8000; h3.y.value = 0x8203; h3.z.value = 0xC321; h3.w.value = 0xFBFF;
            half4 h4; h4.x.value = 0xFC00; h4.y.value = 0xFC00; h4.z.value = 0xFC00; h4.w.value = 0xFC00;
            half4 h5; h5.x.value = 0xFC01; h5.y.value = 0xFC01; h5.z.value = 0xFC01; h5.w.value = 0xFC01;

            TestUtils.AreEqual(uint4(0x00000000, 0x3800C000, 0x40642000, 0x477FE000), asuint(h0));
            TestUtils.AreEqual(uint4(0x7F800000, 0x7F800000, 0x7F800000, 0x7F800000), asuint(h1));
            TestUtils.AreEqual(true, all(isnan(h2)));

            TestUtils.AreEqual(uint4(0x80000000, 0xB800C000, 0xC0642000, 0xC77FE000), asuint(h3));
            TestUtils.AreEqual(uint4(0xFF800000, 0xFF800000, 0xFF800000, 0xFF800000), asuint(h4));
            TestUtils.AreEqual(true, all(isnan(h5)));
        }

        [TestCompiler]
        public static void half_to_double()
        {
            TestUtils.AreEqual(0x0000000000000000u, asulong((double)new half { value = 0x0000 }));
            TestUtils.AreEqual(0x3F00180000000000u, asulong((double)new half { value = 0x0203 }));
            TestUtils.AreEqual(0x400C840000000000u, asulong((double)new half { value = 0x4321 }));
            TestUtils.AreEqual(0x40eFFC0000000000u, asulong((double)new half { value = 0x7BFF }));


 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

MathJax.Localization.addTranslation("scn","HTML-CSS",{version:"2.7.5",isLoaded:true,strings:{LoadWebFont:"Scarricamentu d\u00FB tipu di car\u00E0ttiri web %1",CantLoadWebFont:"Nun si potti scarricari lu tipu di car\u00E0ttiri web %1",FirefoxCantLoadWebFont:"Firefox nun p\u00F2 scarricari tipi di car\u00E0ttiri web di n'host rimotu",CantFindFontUsing:"Nun si potti attruvari nu tipu di car\u00E0ttiri bonu tra %1",WebFontsNotAvailable:"Li tipi di car\u00E0ttiri web nun sunnu dispun\u00ECbbili, \u00F4 s\u00F2 postu s'ad\u00F2piranu mm\u00E0ggini fatti a tipu di car\u00E0ttiri"}});MathJax.Ajax.loadComplete("[MathJax]/localization/scn/HTML-CSS.js");
/*
 *  /MathJax/localization/cdo/cdo.js
 *
 *  Copyright (c) 2009-2018 The MathJax Consortium
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

MathJax.Localization.addTranslation("cdo",null,{menuTitle:"M\u00ECng-d\u0115\u0324ng-ng\u1E73\u0304",version:"2.7.5",isLoaded:true,domains:{_:{version:"2.7.5",isLoaded:true,strings:{CookieConfig:"MathJax\u5DF2\u7D93\u8A0E\u8457\u5305\u62EC\u6703\u904B\u884C\u5176\u4EE3\u78BC\u5176\u7528\u6236\u914D\u7F6Ecookie\u3002\u6C5D\u6709\u60F3\u904B\u884C\u7121\uFF1F\n\n\uFF08\u9664\u958B\u9019\u78BA\u5BE6\u662F\u6C5D\u81EA\u5BB6\u7279\u610F\u8A2D\u5176cookie\uFF0C\u82E5\u7121\u6C5D\u8457\u9EDE\u53D6\u6D88\u3002\uFF09",MathProcessingError:"\u6578\u5B78\u8655\u7406\u932F\u8AA4",MathError:"\u6578\u5B78\u932F\u8AA4",LoadFile:"\u8F09\u5165%1",Loading:"\u8F09\u5165"


#pragma once

#include "quantum.h"

#define LAYOUT_all( \
	K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
	K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A,      \
	K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,      K2B, \
	K30, K31, K32, K33, K34, K35, K36, K37, K38, K39,      K3B  \
) { \
    { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A,   K0B   }, \
    { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A,   KC_NO }, \
    { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_NO, K2B   }, \
    { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, KC_NO, K3B   }  \
}

#define LAYOUT_minorca( \
	K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
	K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A,      \
	K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,      K2B, \
	K30, K31, K32,      K34,      K36,      K38, K39,      K3B  \
) { \
    { K00, K01, K02, K03,   K04, K05,   K06, K07,   K08, K09, K0A,   K0B   }, \
    { K10, K11, K12, K13,   K14, K15,   K16, K17,   K18, K19, K1A,   KC_NO }, \
    { K20, K21, K22, K23,   K24, K25,   K26, K27,   K28, K29, KC_NO, K2B   }, \
    { K30, K31, K32, KC_NO, K34, KC_NO, K36, KC_NO, K38, K39, KC_NO, K3B   }  \
}

#define LAYOUT_sebright( \
	K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
	K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A,      \
	K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,      K2B, \
	     K31, K32, K33,      K35,      K37, K38, K39            \
) { \
    { K00,   K01, K02, K03, K04,   K05, K06,   K07, K08, K09, K0A,   K0B   }, \
    { K10,   K11, K12, K13, K14,   K15, K16,   K17, K18, K19, K1A,   KC_NO }, \
    { K20,   K21, K22, K23, K24,   K25, K26,   K27, K28, K29, KC_NO, K2B   }, \
    { KC_NO, K31, K32, K33, KC_NO, K35, KC_NO, K37, K38, K39, KC_NO, KC_NO }  \
}


:tallgrass", 0, MaterialType.BLOCK, "DEAD_BUSH" ),
	TALL_GRASS( 31, "minecraft:tallgrass", 1, MaterialType.BLOCK ),
	FERN( 31, "minecraft:tallgrass", 2, MaterialType.BLOCK ),
	DEAD_BUSH( 32, "minecraft:deadbush", 0, MaterialType.BLOCK, "DEAD_BUSH" ),
	PISTON( 33, "minecraft:piston", 0, MaterialType.BLOCK ),
	PISTON_HEAD( 34, "minecraft:piston_head", 0, MaterialType.BLOCK ),
	WHITE_WOOL( 35, "minecraft:wool", 0, MaterialType.BLOCK ),
	ORANGE_WOOL( 35, "minecraft:wool", 1, MaterialType.BLOCK ),
	MAGENTA_WOOL( 35, "minecraft:wool", 2, MaterialType.BLOCK ),
	LIGHT_BLUE_WOOL( 35, "minecraft:wool", 3, MaterialType.BLOCK ),
	YELLOW_WOOL( 35, "minecraft:wool", 4, MaterialType.BLOCK ),
	LIME_WOOL( 35, "minecraft:wool", 5, MaterialType.BLOCK ),
	PINK_WOOL( 35, "minecraft:wool", 6, MaterialType.BLOCK ),
	GRAY_WOOL( 35, "minecraft:wool", 7, MaterialType.BLOCK ),
	LIGHT_GRAY_WOOL( 35, "minecraft:wool", 8, MaterialType.BLOCK ),
	CYAN_WOOL( 35, "minecraft:wool", 9, MaterialType.BLOCK ),
	PURPLE_WOOL( 35, "minecraft:wool", 10, MaterialType.BLOCK ),
	BLUE_WOOL( 35, "minecraft:wool", 11, MaterialType.BLOCK ),
	BROWN_WOOL( 35, "minecraft:wool", 12, MaterialType.BLOCK ),
	GREEN_WOOL( 35, "minecraft:wool", 13, MaterialType.BLOCK ),
	RED_WOOL( 35, "minecraft:wool", 14, MaterialType.BLOCK ),
	BLACK_WOOL( 35, "minecraft:wool", 15, MaterialType.BLOCK ),

	DANDELION( 37, "minecraft:yellow_flower", 0, MaterialType.BLOCK ),
	POPPY( 38, "minecraft:red_flower", 0, MaterialType.BLOCK, "RED_ROSE" ),
	BLUE_ORCHID( 38, "minecraft:red_flower", 1, MaterialType.BLOCK ),
	ALLIUM( 38, "minecraft:red_flower", 2, MaterialType.BLOCK ),
	AZURE_BLUET( 38, "minecraft:red_flower", 3, MaterialType.BLOCK, "AZURE_BLUET" ),
	RED_TULIP( 38, "minecraft:red_flower", 4, MaterialType.BLOCK ),
	ORANGE_TULIP( 38, "minecraft:red_flower", 5, MaterialType.BLOCK ),
	WHITE_TULIP( 38, "minecraft:red_flower", 6, MaterialType.BLOCK ),
	PINK_TULIP( 38, "minecraft:red_flower", 7, MaterialType.BLOCK ),
	OXEYE_DAISY( 38, "minecraft:red_flower", 8, MaterialType.BLOCK ),
	BROWN_MUSHROOM( 39, "minecraft:brown_mushroom", 0, MaterialType.BLOCK ),
	RED_MUSHROOM( 40, "minecraft:red_mushroom", 0, MaterialType.BLOCK ),
	GOLD_BLOCK( 41, "minecraft:gold_block", 0, MaterialType.BLOCK ),
	IRON_BLOCK( 42, "minecraft:iron_block", 0, MaterialType.BLOCK ),

	STONE_SLAB( 44, "minecraft:stone_slab", 0, MaterialType.BLOCK ),
	SANDSTONE_SLAB( 44, "minecraft:stone_slab", 1, MaterialType.BLOCK ),
	WOODEN_SLAB( 44, "minecraft:stone_slab", 2, MaterialType.BLOCK ),
	COBBLESTONE_SLAB(


--- media/audio/sndio/sndio_input.h.orig	2022-02-07 13:39:41 UTC
+++ media/audio/sndio/sndio_input.h
@@ -0,0 +1,91 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef MEDIA_AUDIO_SNDIO_SNDIO_INPUT_H_
+#define MEDIA_AUDIO_SNDIO_SNDIO_INPUT_H_
+
+#include <stdint.h>
+#include <string>
+#include <sndio.h>
+
+#include "base/compiler_specific.h"
+#include "base/memory/weak_ptr.h"
+#include "base/time/time.h"
+#include "media/audio/agc_audio_stream.h"
+#include "media/audio/audio_io.h"
+#include "media/audio/audio_device_description.h"
+#include "media/base/audio_parameters.h"
+
+namespace media {
+
+class AudioManagerBase;
+
+// Implementation of AudioOutputStream using sndio(7)
+class SndioAudioInputStream : public AgcAudioStream<AudioInputStream> {
+ public:
+  // Pass this to the constructor if you want to attempt auto-selection
+  // of the audio recording device.
+  static const char kAutoSelectDevice[];
+
+  // Create a PCM Output stream for the SNDIO device identified by
+  // |device_name|. If unsure of what to use for |device_name|, use
+  // |kAutoSelectDevice|.
+  SndioAudioInputStream(AudioManagerBase* audio_manager,
+                     const std::string& device_name,
+                     const AudioParameters& params);
+
+  SndioAudioInputStream(const SndioAudioInputStream&) = delete;
+  SndioAudioInputStream& operator=(const SndioAudioInputStream&) = delete;
+
+  ~SndioAudioInputStream() override;
+
+  // Implementation of AudioInputStream.
+  OpenOutcome Open() override;
+  void Start(AudioInputCallback* callback) override;
+  void Stop() override;
+  void Close() override;
+  double GetMaxVolume() override;
+  void SetVolume(double volume) override;
+  double GetVolume() override;
+  bool IsMuted() override;
+  void SetOutputDeviceForAec(const std::string& output_device_id) override;
+
+ private:
+
+  enum StreamState {
+    kClosed,            // Not opened yet
+    kStopped,           // Device opened, but not started yet
+    kRunning,           // Started, device playing
+    kStopWait           // Stopping, waiting for the real-time thread to exit
+  };
+
+  // C-style call-backs
+  static void OnMoveCallback(void *arg, int delta);
+  static void* ThreadEntry(void *arg);
+
+  // Continuously moves data from the device to the consumer
+  void ThreadLoop();
+  // Our creator, the audio manager needs to be notified when we close.
+  AudioManagerBase* manager;
+  // Parameters of the source
+  AudioParameters params;
+  // We store data here for consumer
+  std::unique_ptr<AudioBus> audio_bus;
+  // Call-back that consumes recorded data
+  AudioInputCallback* callback;  // Valid during a recording session.
+  // Handle of the audio device
+  struct sio_hdl* hdl;
+  // Current state of the stream
+  enum StreamState state;
+  // High priority thread running ThreadLoop()
+  pthread_t thread;
+  // Number of frames buffered in the hardware
+  int hw_delay;
+  // Temporary buffer where data is stored sndio-compatible format
+  char* buffer;
+};
+
+}  // namespace media
+
+#endif  // MEDIA_AUDIO_SNDIO_SNDIO_INPUT_H_


Coordinate():GetAngleDegrees(vectorCarrier),0)
local distance=UTILS.Round(UTILS.MetersToNM(unit:GetCoordinate():Get2DDistance(self:GetCoordinate())),0)
local angels=UTILS.Round(UTILS.MetersToFeet(unit:GetHeight()/1000),0)
local state=UTILS.Round(self:_GetFuelState(unit)/1000,1)
local text=string.format("Marshal, %s, marking mom's %d for %d, angels %d, state %.1f",modex,bearing,distance,angels,state)
self:T(self.lid..text)
local FS=UTILS.Split(string.format("%.1f",state),".")
local inboundcall=self:_NewRadioCall(self.MarshalCall.CLICK,unit.UnitName:upper(),text,self.Tmessage,nil,unit.UnitName:upper())
self:RadioTransmission(self.MarshalRadio,inboundcall)
self:RadioTransmission(self.MarshalRadio,self.PilotCall.MARSHAL,nil,nil,nil,nil,true)
self:_Number2Radio(self.MarshalRadio,modex,nil,nil,true)
self:RadioTransmission(self.MarshalRadio,self.PilotCall.MARKINGMOMS,nil,nil,nil,nil,true)
self:_Number2Radio(self.MarshalRadio,tostring(bearing),nil,nil,true)
self:RadioTransmission(self.MarshalRadio,self.PilotCall.FOR,nil,nil,nil,nil,true)
self:_Number2Radio(self.MarshalRadio,tostring(distance),nil,nil,true)
self:RadioTransmission(self.MarshalRadio,self.PilotCall.ANGELS,nil,nil,nil,nil,true)
self:_Number2Radio(self.MarshalRadio,tostring(angels),nil,nil,true)
self:RadioTransmission(self.MarshalRadio,self.PilotCall.STATE,nil,nil,nil,nil,true)
self:_Number2Radio(self.MarshalRadio,FS[1],nil,nil,true)
self:RadioTransmission(self.MarshalRadio,self.PilotCall.POINT,nil,nil,nil,nil,true)
self:_Number2Radio(self.MarshalRadio,FS[2],nil,nil,true)
self:RadioTransmission(self.MarshalRadio,self.MarshalRadio.CLICK,nil,nil,nil,nil,true)
end
function AIRBOSS:_CommencingCall(unit,modex)
local text=string.format("%s, commencing",modex)
self:T(self.lid..text)
local commencingCall=self:_NewRadioCall(self.MarshalCall.CLICK,unit.UnitName:upper(),text,self.Tmessage,nil,unit.UnitName:upper())
self:RadioTransmission(self.MarshalRadio,commencingCall)
self:_Number2Radio(self.MarshalRadio,modex,nil,nil,true)
self:RadioTransmission(self.MarshalRadio,self.PilotCall.COMMENCING,nil,nil,nil,nil,true)
self:RadioTransmission(self.MarshalRadio,self.MarshalRadio.CLICK,nil,nil,nil,nil,true)
end
function AIRBOSS:_LSOCallAircraftBall(modex,nickname,fuelstate)
local text=string.format("%s Ball, %.1f.",nickname,fuelstate)
self:T(self.lid..text)
local NICKNAME=nickname:upper()
local FS=UTILS.Split(string.format("%.1f",fuelstate),".")
local call=self:_NewRadioCall(self.PilotCall[NICKNAME],modex,text,self.Tmessage,nil,modex)
self:RadioTransmission(self.LSORadio,call,nil,nil,nil,nil,true)
self:RadioTransmission(self.LSORadio,self.PilotCall.BALL,nil,nil,nil,nil,true)
self:_Number2Radio(self.LSORadio,FS[1],nil,nil,true)
self:RadioTransmission(self.LSORadio,self.PilotCall.POINT,nil,nil,nil,nil


t += base64EncodeChars.charAt(c1 >> 2);
        out += base64EncodeChars.charAt((c1 & 0x3) << 4);
        out += "==";
        break;
    }
    c2 = str.charCodeAt(i++);
    if(i == len)
    {
        out += base64EncodeChars.charAt(c1 >> 2);
        out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
        out += base64EncodeChars.charAt((c2 & 0xF) << 2);
        out += "=";
        break;
    }
    c3 = str.charCodeAt(i++);
    out += base64EncodeChars.charAt(c1 >> 2);
    out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
    out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6));
    out += base64EncodeChars.charAt(c3 & 0x3F);
    }
    return out;
}

function base64decode(str) {
    var c1, c2, c3, c4;
    var i, len, out;

    len = str.length;
    i = 0;
    out = "";
    while(i < len) {
    /* c1 */
    do {
        c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
    } while(i < len && c1 == -1);
    if(c1 == -1)
        break;

    /* c2 */
    do {
        c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
    } while(i < len && c2 == -1);
    if(c2 == -1)
        break;

    out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));

    /* c3 */
    do {
        c3 = str.charCodeAt(i++) & 0xff;
        if(c3 == 61)
        return out;
        c3 = base64DecodeChars[c3];
    } while(i < len && c3 == -1);
    if(c3 == -1)
        break;

    out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));

    /* c4 */
    do {
        c4 = str.charCodeAt(i++) & 0xff;
        if(c4 == 61)
        return out;
        c4 = base64DecodeChars[c4];
    } while(i < len && c4 == -1);
    if(c4 == -1)
        break;
    out += String.fromCharCode(((c3 & 0x03) << 6) | c4);
    }
    return out;
}

function utf16to8(str) {
    var out, i, len, c;

    out = "";
    len = str.length;
    for(i = 0; i < len; i++) {
    c = str.charCodeAt(i);
    if ((c >= 0x0001) && (c <= 0x007F)) {
        out += str.charAt(i);
    } else if (c > 0x07FF) {
        out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
        out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
        out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
    } else {
        out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
        out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
    }
    }
    return out;
}

function utf8to16(str) {
    var out, i, len, c;
    var char2, char3;

    out = "";
    len = str.length;
    i = 0;
    while(i < len) {
    c = str.charCodeAt(i++);
    switch(c >> 4)
    {
      case 0: case 1: case 2: case 3: case 4: case 5: case 6: case


4CC0
/* ADBE60 80064CC0 3C01437F */  li    $at, 0x437F0000 # 0.000000
/* ADBE64 80064CC4 44812000 */  mtc1  $at, $f4
/* ADBE68 80064CC8 240A0001 */  li    $t2, 1
/* ADBE6C 80064CCC 3C028016 */  lui   $v0, %hi(D_801614B0) # $v0, 0x8016
/* ADBE70 80064CD0 46002182 */  mul.s $f6, $f4, $f0
/* ADBE74 80064CD4 244214B0 */  addiu $v0, %lo(D_801614B0) # addiu $v0, $v0, 0x14b0
/* ADBE78 80064CD8 240300FF */  li    $v1, 255
/* ADBE7C 80064CDC 240F00B4 */  li    $t7, 180
/* ADBE80 80064CE0 24190064 */  li    $t9, 100
/* ADBE84 80064CE4 A0430000 */  sb    $v1, ($v0)
/* ADBE88 80064CE8 A04F0001 */  sb    $t7, 1($v0)
/* ADBE8C 80064CEC 4458F800 */  cfc1  $t8, $31
/* ADBE90 80064CF0 44CAF800 */  ctc1  $t2, $31
/* ADBE94 80064CF4 A0590002 */  sb    $t9, 2($v0)
/* ADBE98 80064CF8 3C014F00 */  li    $at, 0x4F000000 # 0.000000
/* ADBE9C 80064CFC 46003224 */  cvt.w.s $f8, $f6
/* ADBEA0 80064D00 444AF800 */  cfc1  $t2, $31
/* ADBEA4 80064D04 00000000 */  nop
/* ADBEA8 80064D08 314A0078 */  andi  $t2, $t2, 0x78
/* ADBEAC 80064D0C 51400013 */  beql  $t2, $zero, .L80064D5C
/* ADBEB0 80064D10 440A4000 */   mfc1  $t2, $f8
/* ADBEB4 80064D14 44814000 */  mtc1  $at, $f8
/* ADBEB8 80064D18 240A0001 */  li    $t2, 1
/* ADBEBC 80064D1C 46083201 */  sub.s $f8, $f6, $f8
/* ADBEC0 80064D20 44CAF800 */  ctc1  $t2, $31
/* ADBEC4 80064D24 00000000 */  nop
/* ADBEC8 80064D28 46004224 */  cvt.w.s $f8, $f8
/* ADBECC 80064D2C 444AF800 */  cfc1  $t2, $31
/* ADBED0 80064D30 00000000 */  nop
/* ADBED4 80064D34 314A0078 */  andi  $t2, $t2, 0x78
/* ADBED8 80064D38 15400005 */  bnez  $t2, .L80064D50
/* ADBEDC 80064D3C 00000000 */   nop
/* ADBEE0 80064D40 440A4000 */  mfc1  $t2, $f8
/* ADBEE4 80064D44 3C018000 */  lui   $at, 0x8000
/* ADBEE8 80064D48 10000007 */  b     .L80064D68
/* ADBEEC 80064D4C 01415025 */   or    $t2, $t2, $at
.L80064D50:
/* ADBEF0 80064D50 10000005 */  b     .L80064D68
/* ADBEF4 80064D54 240AFFFF */   li    $t2, -1
/* AD


 // MISSING
		circle				: 'Circle', // MISSING
		disc				: 'Disc', // MISSING
		square				: 'Square', // MISSING
		none				: 'None', // MISSING
		notset				: '<not set>', // MISSING
		armenian			: 'Armenian numbering', // MISSING
		georgian			: 'Georgian numbering (an, ban, gan, etc.)', // MISSING
		lowerRoman			: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING
		upperRoman			: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING
		lowerAlpha			: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING
		upperAlpha			: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING
		lowerGreek			: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING
		decimal				: 'Decimal (1, 2, 3, etc.)', // MISSING
		decimalLeadingZero	: 'Decimal leading zero (01, 02, 03, etc.)' // MISSING
	},

	// Find And Replace Dialog
	findAndReplace :
	{
		title				: 'بحث واستبدال',
		find				: 'بحث',
		replace				: 'إستبدال',
		findWhat			: 'البحث بـ:',
		replaceWith			: 'إستبدال بـ:',
		notFoundMsg			: 'لم يتم العثور على النص المحدد.',
		matchCase			: 'مطابقة حالة الأحرف',
		matchWord			: 'مطابقة بالكامل',
		matchCyclic			: 'مطابقة دورية',
		replaceAll			: 'إستبدال الكل',
		replaceSuccessMsg	: 'تم استبدال 1% من الحالات '
	},

	// Table Dialog
	table :
	{
		toolbar		: 'جدول',
		title		: 'خصائص الجدول',
		menu		: 'خصائص الجدول',
		deleteTable	: 'حذف الجدول',
		rows		: 'صفوف',
		columns		: 'أعمدة',
		border		: 'الحدود',
		widthPx		: 'بكسل',
		widthPc		: 'بالمئة',
		widthUnit	: 'width unit', // MISSING
		cellSpace	: 'تباعد الخلايا',
		cellPad		: 'المسافة البادئة',
		caption		: 'الوصف',
		summary		: 'الخلاصة',
		headers		: 'العناوين',
		headersNone		: 'بدون',
		headersColumn	: 'العمود الأول',
		headersRow		: 'الصف الأول',
		headersBoth		: 'كلاهما',
		invalidRows		: 'عدد الصفوف يجب أن يكون عدداً أكبر من صفر.',
		invalidCols		: 'عدد الأعمدة يجب أن يكون عدداً أكبر من صفر.',
		invalidBorder	: 'حجم الحد يجب أن يكون عدداً.',
		invalidWidt


--icon-only,
.o3-button-pagination__ellipsis {
	--_o3-button-min-width: auto;
	--_o3-button-min-height: 40px;
	max-width: 38px;
	flex: 1 1 38px;
}

@supports (container-type: inline-size) {
	/*
	 * If container is less than the width of 9 buttons (2 arrows + 7 total pages/ellipses),
	 * hide some buttons for a 'narrow' view.
	 *
	 * Read as: calc(--_o3-button-min-width * 9 + var(--o3-spacing-4xs) * 8)
	 */
	@container (width <= calc((38px * 9) + (0.5rem * 8))) {
		.o3-button-pagination > [data-o3-button-show-when='wide'] {
			display: none;
		}
	}
	@container (width > calc((38px * 9) + (0.5rem * 8))) {
		.o3-button-pagination > [data-o3-button-show-when='narrow'] {
			display: none;
		}
	}
}

@supports not (container-type: inline-size) {
	/*
	 * 740px aligns with our legacy o-grid M layout
	 * (https://registry.origami.ft.com/components/o-grid@6.1.7/readme?brand=core#Readme)
	 */
	@media screen and (max-width: 740px) {
		.o3-button-pagination > [data-o3-button-show-when='wide'] {
			display: none;
		}
	}
	@media screen and (min-width: 741px) {
		.o3-button-pagination > [data-o3-button-show-when='narrow'] {
			display: none;
		}
	}
}

.o3-button-pagination__ellipsis {
	display: flex;
	box-sizing: border-box;
	justify-content: center;
	align-items: center;
	font-size: var(--o3-font-size-3);
	line-height: 0;
	min-height: var(--_o3-button-min-height);
	color: var(--o3-color-palette-black-60);
}

.o3-button-pagination__ellipsis[data-o3-theme='inverse'],
:where([data-o3-theme='inverse']) .o3-button-pagination__ellipsis {
	color: var(--o3-color-palette-white);
}

/* Grouped buttons */

.o3-button-group {
	display: flex;
	flex-wrap: wrap;
}

.o3-button-group > .o3-button + .o3-button {
	margin-left: calc(var(--_o3-button-border-size) * -1);
	border-radius: 0;
}
.o3-button-group > .o3-button:first-of-type {
	border-radius: 0;
	border-top-left-radius: var(--o3-border-radius-1);
	border-bottom-left-radius: var(--o3-border-radius-1);
}
.o3-button-group > .o3-button:last-of-type {
	border-radius: 0;
	border-top-right-radius: var(--o3-border-radius-1);
	border-bottom-right-radius: var(--o3-border-radius-1);
}

/* BUTTON ICON  */

.o3-button-icon::before {
	content: '';
	width: var(--_o3-icon-size);
	height: var(--_o3-icon-size);
	mask-image: var(--o3-button-icon);
	mask-repeat: no-repeat;
	mask-si


                     {
                                return;
                            }
                            else
                            {
                                for (var j = 0; j < vSubTriple.length; j++)
                                {
                                    vTriple.push(vSubTriple[j]);
                                }
                                return;
                            }
                        }
                    }
                }
            }
            else//字牌，东，南，西，北，中，发，白
            {
                //3张牌，必为一刻，字牌不存在顺
                if (vSingleCard.length == 3)
                {
                    //为一刻
                    if (vSingleCard[0] == vSingleCard[2])
                    {
                        var tagTriple:clsParseTriple = new clsParseTriple();
                        tagTriple.Clear();
                        tagTriple.enTripleType = enTripleType.TripleType_Echo;
                        tagTriple.cTokenCard = vSingleCard[0];
                        for (var i = 0; i < 3; i++)
                        {
                            tagTriple.cCardAry[i] = vSingleCard[i];
                        }
                        vTriple.push(tagTriple);
                    }
                    return;
                }

                //6，9，12张牌
                if ((vSingleCard.length % 3) == 0)
                {
                    for (var i = 0; i < vSingleCard.length - 2; i++)
                    {
                        //搜刻,如果含有刻，这三张必在一起
                        if ((vSingleCard[i] == vSingleCard[i + 1]) && (vSingleCard[i] == vSingleCard[i + 2]))
                        {
                            //本次去除刻后的子串
                            var vRemCard:Array<number> = new Array<number>();
                            for (var j = 0; j < vSingleCard.length; j++)
                            {
                                if (j < i || j > i + 2)
                                {
                                    vRemCard.push(vSingleCard[j]);
                                }
                            }
                            //递归解析本次去刻后的子串
                            var vSubTriple:Array<clsParseTriple> = new Array<clsParseTriple>();
                            this.Parse3ModelToTripleList(vRemCard, vSubTriple);
                            if (vSubTriple.length == 0)
                            {
                                return;
                            }
                            else
                            {
                                for (var j = 0; j < vSubTriple.length; j++)
                                {
                                    vTriple.push(vSubTriple[j]);
                                }
                                //再加上此次拆串所得刻
                                var tagTriple:clsParseTriple = new clsParseTriple();
                                tagTriple.Clear();
                                tagTriple.enTripleType = enTripleType.TripleType_Echo;
                                tagTriple.cTokenCard = vSingleCard[i];
                                for (var j = 0; j < 3; j++)
                                {
                                    tagTriple.cCardAry[j] = vSingleCard[i + j];
                                }
                                vTriple.push(tagTriple);
                                return;
                            }
                        }
                    }
                }
            }
        }

        private static IsHuNormalStructNJMJ(vSrc:Array<number>, laizi:number):boolean
        {
            //1、先决条件，胡牌时手上最少要有2张
            if (vSrc.length < 2)
            {
                return false;
            }
            var laiziNum:number = 0;
            var srcAry:Array<number> = new Array<number>();
            //去赖子
            for (var i = 0; i < vSrc.length; i++)
            {
                if (


normal[ i + 1 ] = cb[ 1 ]
      normal[ i + 2 ] = cb[ 2 ]

      normal[ i + 3 ] = cb[ 0 ]
      normal[ i + 4 ] = cb[ 1 ]
      normal[ i + 5 ] = cb[ 2 ]

      normal[ i + 6 ] = cb[ 0 ]
      normal[ i + 7 ] = cb[ 1 ]
      normal[ i + 8 ] = cb[ 2 ]
    }
  }

  normalizeVector3array(normal)

  return normal
}
Object.assign(computeVertexNormals, {__deps: [
  v3sub, v3cross, v3fromArray, normalizeVector3array
]})

function getRadiusDict (radiusList: number[]) {
  var radiusDict: {[k: number]: boolean} = {}
  for (var i = 0, il = radiusList.length; i < il; ++i) {
    radiusDict[ radiusList[ i ] ] = true
  }
  return radiusDict
}

function getSurfaceGrid (min: Float32Array, max: Float32Array, maxRadius: number, scaleFactor: number, extraMargin: number) {
  // need margin to avoid boundary/round off effects
  var margin = (1 / scaleFactor) * 3
  margin += maxRadius

  v3subScalar(min, min, extraMargin + margin)
  v3addScalar(max, max, extraMargin + margin)

  v3multiplyScalar(min, min, scaleFactor)
  v3floor(min, min)
  v3divideScalar(min, min, scaleFactor)

  v3multiplyScalar(max, max, scaleFactor)
  v3ceil(max, max)
  v3divideScalar(max, max, scaleFactor)

  var dim = new Float32Array(3)
  v3sub(dim, max, min)
  v3multiplyScalar(dim, dim, scaleFactor)
  v3ceil(dim, dim)
  v3addScalar(dim, dim, 1)

  var maxSize = Math.pow(10, 6) * 256
  var tmpSize = dim[ 0 ] * dim[ 1 ] * dim[ 2 ] * 3

  if (maxSize <= tmpSize) {
    scaleFactor *= Math.pow(maxSize / tmpSize, 1 / 3)

    v3multiplyScalar(min, min, scaleFactor)
    v3floor(min, min)
    v3divideScalar(min, min, scaleFactor)

    v3multiplyScalar(max, max, scaleFactor)
    v3ceil(max, max)
    v3divideScalar(max, max, scaleFactor)

    v3sub(dim, max, min)
    v3multiplyScalar(dim, dim, scaleFactor)
    v3ceil(dim, dim)
    v3addScalar(dim, dim, 1)
  }

  var tran = new Float32Array(min)
  v3negate(tran, tran)

  // coordinate transformation matrix
  var matrix = m4new()
  var mroty = m4new()
  m4makeRotationY(mroty, degToRad(90))
  m4multiply(matrix, matrix, mroty)

  var mscale = m4new()
  m4makeScale(
    mscale,
    -1 / scaleFactor,
    1 / scaleFactor,
    1 / scaleFactor
  )
  m4multiply(matrix, matrix, mscale)

  var mtrans = m4new()
  m4makeTranslation(
    mtrans,
    -scaleFactor * tran[2],
    -scaleFactor * tran[1],
    -scaleFactor * tran[0]
  )
  m4multiply(matrix, matrix, mtrans)

  return {
    dim: dim,
    tran: tran,
    matrix: matrix,
    scaleFactor: scaleFactor
  }
}
Object.assign(getSurfaceGrid, {'__deps': [
  degToRad,
  v3subScalar, v3addScalar, v3divideScalar, v3multiplyScalar,
  v3floor, v


Answer((_) async => {
  //   //         "hosts": <dynamic, dynamic>{},
  //   //         "pruning": null,
  //   //         "server_version": "Unit tests",
  //   //         "protocol_min": "1.4",
  //   //         "protocol_max": "1.4.2",
  //   //         "genesis_hash": GENESIS_HASH_MAINNET,
  //   //         "hash_function": "sha256",
  //   //         "services": <dynamic>[]
  //   //       });
  //   //   when(client?.getBatchHistory(args: historyBatchArgs0))
  //   //       .thenAnswer((_) async => historyBatchResponse);
  //   //   when(client?.getBatchHistory(args: historyBatchArgs1))
  //   //       .thenAnswer((_) async => historyBatchResponse);
  //   //   when(client?.getBatchHistory(args: historyBatchArgs2))
  //   //       .thenAnswer((_) async => historyBatchResponse);
  //   //   when(client?.getBatchHistory(args: historyBatchArgs3))
  //   //       .thenAnswer((_) async => historyBatchResponse);
  //   //
  //   //   List<dynamic> dynamicArgValues = [];
  //   //
  //   //   when(client?.getBatchHistory(args: anyNamed("args")))
  //   //       .thenAnswer((realInvocation) async {
  //   //     if (realInvocation.namedArguments.values.first.length == 1) {
  //   //       dynamicArgValues.add(realInvocation.namedArguments.values.first);
  //   //     }
  //   //
  //   //     return historyBatchResponse;
  //   //   });
  //   //
  //   //   await Hive.openBox<dynamic>(testWalletId);
  //   //
  //   //   when(cachedClient?.getTransaction(
  //   //           txHash:
  //   //               "85130125ec9e37a48670fb5eb0a2780b94ea958cd700a1237ff75775d8a0edb0",
  //   //           coin: Coin.particl))
  //   //       .thenAnswer((_) async => tx2Raw);
  //   //   when(cachedClient?.getTransaction(
  //   //           txHash:
  //   //               "bb25567e1ffb2fd6ec9aa3925a7a8dd3055a29521f7811b2b2bc01ce7d8a216e",
  //   //           coin: Coin.particl))
  //   //       .thenAnswer((_) async => tx3Raw);
  //   //   when(cachedClient?.getTransaction(
  //   //     txHash:
  //   //         "bb25567e1ffb2fd6ec9aa3925a7a8dd3055a29521f7811b2b2bc01ce7d8a216e",
  //   //     coin: Coin.particl,
  //   //   )).thenAnswer((_) async => tx4Raw);
  //   //
  //   //   // recover to fill data
  //   //   await part?.recoverFromMnemonic(
  //   //       mnemonic: TEST_MNEMONIC,
  //   //       maxUnusedAddressGap: 2,
  //   //       maxNumberOfIndexesToCheck: 1000,
  //   //       height: 4000);
  //   //
  //   //   // modify addresses to properly mock data to build a tx
  //   //   final rcv44 = await secureStore.read(
  //   //       key: "${testWalletId}_receiveDerivationsP2PKH");
  //   //   await secureStore.write(
  //   //       key: "${testWalletId}_receiveDerivationsP2PKH",
  //   //       v


def mask_cidr(masque):
    """
    Function for convert a binary mask to CIDR mask
    """
    octets = masque.split('.')
    bits_a_un = 0
    for octet in octets:
        bits_a_un += bin(int(octet)).count('1')
    cidr =str(bits_a_un)
    return cidr


bject, \"timeout\", v2);\n  v23 = cJSON_CreateObject();\n  if ( !strcmp(a1, \"DF\") )\n    v3 = cJSON_CreateBool(0);\n  else\n    v3 = cJSON_CreateBool(1);\n  cJSON_AddItemToObject(v23, \"region_status\", v3);\n  v4 = cJSON_CreateBool(1);\n  cJSON_AddItemToObject(v23, \"show2gFlag\", v4);\n  v5 = cJSON_CreateBool(0);\n  cJSON_AddItemToObject(v23, \"show5gFlag\", v5);\n  String = cJSON_CreateString(a1);\n  cJSON_AddItemToObject(v23, \"country\", String);\n  v24 = cJSON_CreateObject();\n  StringArray = cJSON_CreateStringArray(v16, 3);\n  cJSON_AddItemToObject(v24, \"hwmode_2g\", StringArray);\n  v8 = cJSON_CreateStringArray(v17, 3);\n  cJSON_AddItemToObject(v24, \"hwmode_5g\", v8);\n  v9 = cJSON_CreateStringArray(v18, 3);\n  cJSON_AddItemToObject(v24, \"htmode_2g\", v9);\n  v10 = cJSON_CreateStringArray(v19, 4);\n  cJSON_AddItemToObject(v24, \"htmode_5g\", v10);\n  if ( !strcmp(a1, \"JP\") )\n  {\n    IntArray = cJSON_CreateIntArray(v21, 14);\n    cJSON_AddItemToObject(v24, \"channel_2g\", IntArray);\n  }\n  else if ( !strcmp(a1, \"CA\")\n         || !strcmp(a1, \"CO\")\n         || !strcmp(a1, \"DO\")\n         || !strcmp(a1, \"GT\")\n         || !strcmp(a1, \"MX\")\n         || !strcmp(a1, \"PA\")\n         || !strcmp(a1, \"PR\")\n         || !strcmp(a1, \"TW\")\n         || !strcmp(a1, \"US\")\n         || !strcmp(a1, \"UZ\") )\n  {\n    v12 = cJSON_CreateIntArray(v21, 11);\n    cJSON_AddItemToObject(v24, \"channel_2g\", v12);\n  }\n  else\n  {\n    v13 = cJSON_CreateIntArray(v21, 13);\n    cJSON_AddItemToObject(v24, \"channel_2g\", v13);\n  }\n  v14 = cJSON_CreateIntArray(v20, 9);\n  cJSON_AddItemToObject(v24, \"channel_5g\", v14);\n  cJSON_AddItemToObject(v23, \"capability\", v24);\n  cJSON_AddItemToObject(Object, \"data\", v23);\n  write_Json_file(\"/tmp/region.channel.info\", Object);\n  return 0;\n}"], "assembly": ["0x4045fc: li      $gp, (_GLOBAL_OFFSET_TABLE_+0x7FF0 - .)\n0x404604: addu    $gp, $t9\n0x404608: addiu   $sp, -0xE8\n0x40460c: sw      $ra, 0xE0+var_s4($sp)\n0x404610: sw      $fp, 0xE0+var_s0($sp)\n0x404614: move    $fp, $


,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#f57a00}.has-warning .form-control,.has-warning .form-control:focus{border-color:#f57a00}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#eb6864}.has-error .form-control,.has-error .form-control:focus{border-color:#eb6864}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#22b24c}.has-success .form-control,.has-success .form-control:focus{border-color:#22b24c}.badge{padding-bottom:4px;vertical-align:3px;font-size:10px}.jumbotron h1,.jumbotron h2,.jumbotron h3,.jumbotron h4,.jumbotron h5,.jumbotron h6{font-family:"News Cycle","Arial Narrow Bold",sans-serif;font-weight:700;color:#000}.panel-primary .panel-title,.panel-success .panel-title,.panel-warning .panel-title,.panel-danger .panel-title,.panel-info .panel-title{color:#fff}
blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  @apply m-0;
}

html,
body {
  @apply p-0;
}

#root {
  /* 设置html overflow-y-scroll 会造成图片列表渲染错位问题 */
  /* 所以在 #root 元素上设置 */
  @apply h-full w-full select-none overflow-y-scroll;
}

body {
  [role='dialog'] {
    @apply !origin-center;
  }

  .ant-btn-icon-only {
    @apply inline-flex items-center justify-center;
  }

  .ant-checkbox-wrapper {
    @apply select-none;
  }

  .ant-btn {
    @apply inline-flex items-center justify-center;
  }

  .ant-tabs-nav {
    &::before {
      @apply !border-b-0;
    }
  }

  .ant-modal-root .ant-modal-centered .ant-modal {
    /* 让center看起来更舒适 */
    @apply top-[-12%];
  }

  .ant-modal-confirm .ant-modal-confirm-paragraph {
    /* modal内容宽度占满 */
    @apply max-w-none;
  }
}

::-webkit-scrollbar {
  @apply h-2 w-2;
}

::-webkit-scrollbar-thumb {
  @apply rounded bg-[var(--vscode-scrollbarSlider-background)];
}

::-webkit-scrollbar-thumb:hover {
  @apply bg-[var(--vscode-scrollbarSlider-hoverBackground)];
}

::-webkit-scrollbar-track {
  @apply bg-transparent;
}

::-webkit-scrollbar-corner {
  @apply bg-[var(--vscode


_X,
			vy: 0,
		};
	}

	public registerEntityManager(entityManager: EntityManagerInterface): void {
		this.entityManager = entityManager;
	}

	public updatePosition() {
		this.rectangle = MoveRectangle(this.rectangle, this.velocityVector);
        if ( this.rectangle.bottomRight.x <  0 || this.rectangle.bottomLeft.x >  GameLogic.WIDTH ) {
			if(this.entityManager) {
				this.entityManager.removeEntity(this);
			}
        }

        // collision detection
        if (!this.connectionMade) {
            if (CollisionRectRect(this.rectangle, this.opponent.rectangle)) {
                this.opponent.takePiu((this.velocityVector.vx < 0 ? Direction.LEFT : Direction.RIGHT));
				this.connectionMade = true;
				if (this.entityManager) {
					this.entityManager.removeEntity(this);
				}
            }
        }
	}

	public getBaseColor(): readonly number[] {
		return PlayerRender.PROJECTILE_COLOR;
	}

	public draw(canvas: HTMLCanvasElement) {
		let context = canvas.getContext('2d');
		if (context) {
			context.fillStyle = getRGBString(this.getBaseColor());
			context.fillRect(
				this.rectangle.topLeft.x,
				this.rectangle.topLeft.y,
				PlayerLogic.PROJECTILE_WIDTH,
				PlayerLogic.PROJECTILE_HEIGHT);
		}
	}
}import * as t from 'io-ts';
import {MongoDBObjectIDCodec} from "codec/MongoDBObjectID";
import {MongoDBObjectIDStringCodec} from "codec/MongoDBObjectIDString";
import {partialNullableType} from "utils/codec/partialNullableType";

export const KeywordCodec = t.intersection([
    t.type({
        id: MongoDBObjectIDCodec,
        websiteId: MongoDBObjectIDStringCodec,
        title: t.string,
        platform: t.union([
            t.literal('desktop'),
            t.literal('mobile'),
        ]),
    }),
    partialNullableType({
        lastRank: t.number,
        lastRank2: t.number,
        category: t.string,
    }),
], 'Keyword');

export type Keyword = t.TypeOf<typeof KeywordCodec>import { APIError } from '@linode/api-v4/lib/types';
import { pathOr } from 'ramda';

import { DEFAULT_ERROR_MESSAGE } from 'src/constants';

/**
 *
 * Override the default error message provided by our Axios
 * interceptor with a more situation-specific message.
 *
 * @todo rename this method
 * @todo make the second argument required, so we're not
 * overriding the default error with the same default error
 * in some cases.
 *
 * @example
 *
 * fetchData()
 *  .then()
 *  .catch((e: APIError[]) => getAPIErrorOrDefault(e, 'There was an error', 'label'))
 *
 * @param { AxiosError } - Error response from some API request
 * @param { string } - Default error message on the "reason" key
 * @param { string } - Default error field on the "field" key
 *
 * @returns Linode.APIError[]
 *
 * [ { reason: 'Label is too long', field: 'label' } ]
 *
 */
export const getAPIErrorOrDefault = (
  errorResponse: APIError[],
  defaultError: string = DEFAULT_ERROR_MESSAGE,
  field?: string
): APIError[] => {
  const _defaultError = field
    ? [{ field, reason: defaultError }]
    : [{ reason: defaultError }];

  return isDefaultError(errorResponse) ? _defaultError : errorResponse;
};

const isDefaultError = (errorResponse: APIError[]) => {
  return (
    errorResponse &&
    errorResponse.length === 1 &&
    errorResponse[0].reason === DEFAULT_ERROR_MESSAGE
  );


<opml version="2.0">
                                  <head>
                                    <title>Podcast-Server</title>
                                  </head>
                                  <body>
                                    <outline htmlUrl="https://localhost:9876/podcasts/ad16b2eb-657e-4064-b470-5b99397ce729"
                                        text="Podcast first" description="desc"
                                        title="Podcast first" type="rss" version="RSS2"
                                        xmlUrl="https://localhost:9876/api/podcasts/ad16b2eb-657e-4064-b470-5b99397ce729/rss"
                                    />
                                  </body>
                                </opml>
                            """.trimIndent())
                }

            }

        }

    }

    @Nested
    @DisplayName("should generate rss")
    inner class ShouldGenerateRss {

        private val coverForItem = Item.Cover(
            id = UUID.fromString("f4efe8db-7abf-4998-b15c-9fa2e06096a1"),
            url = URI("https://external.domain.tld/foo/bar.png"),
            width = 200,
            height = 200
        )

        private val podcastForItem = Item.Podcast(
            id = UUID.fromString("dd16b2eb-657e-4064-b470-5b99397ce729"),
            title = "Podcast title",
            url = "https://foo.bar.com/app/file.rss"
        )

        private val items = (200 downTo 1)
            .map { it.toString().padStart(3, '0') }
            .map { Item(
                id = UUID.fromString("27184b1a-7642-4ffd-ac7e-14fb36f7f$it"),
                title = "Foo $it",
                url = "https://external.domain.tld/foo/bar.$it.mp4",

                pubDate = OffsetDateTime.of(2019, 6, 24, 5, 28, 54, 34, ZoneOffset.ofHours(2)).minusDays(200 - it.toLong() ),
                creationDate = OffsetDateTime.of(2019, 6, 24, 5, 29, 54, 34, ZoneOffset.ofHours(2)).minusDays(200 - it.toLong()),
                downloadDate = OffsetDateTime.of(2019, 6, 25, 5, 30, 54, 34, ZoneOffset.ofHours(2)).minusDays(200 - it.toLong()),

                description = "desc $it",
                mimeType = "video/mp4",
                length = 100,
                fileName = null,
                status = Status.NOT_DOWNLOADED,

                podcast = podcastForItem,
                cover = coverForItem
            ) }

        @Nested
        @DisplayName("for podcast with boolean limit")
        inner class ForPodcastWithBooleanLimit {

            @Test
            fun `set to true`() {
                /* Given */
                val podcastId = podcastForItem.id
                val size = 50
                val page = ItemPageRequest(0, size, ItemSort("DESC", "pubDate"))
                val result = PageItem.of(items.take(size), size, page)

                whenever(itemService.search(anyOrNull(), eq(listOf()), eq(listOf()), eq(page), eq(podcastId)))
                    .thenReturn(result)
                whenever(podcastService.findById(podcastId))
                    .thenReturn(podcast)

                val xml = fileAsString("/xml/podcast-with-50-items.xml")

                /* When */
                rest
                    .get()
                    .uri("https://localhost:8080/api/v1/podcasts/$podcastId/rss")
                    .exchange()
                    /* Then */
                    .expectStatus().isOk
                    .expectBody()
                    .xml(xml.trimIndent())
            }

            @Test
            fun `set to false`() {
                /* Given */
                val podcastId = podcastForItem.id
                val page = ItemPageRequest(0, Int.MAX_VALUE, ItemSort("DESC", "pubDate"))
                val result =


 = MathHelper.ceil((healthMax + absorbHeart + soulHeart) / 2.0F) - 1; i >= 0; --i) {

            int row = MathHelper.ceil((float) (i + 1) / 10.0F) - 1;
            int x = left + i % 10 * 8;
            int y = top - row * rowHeight;

            if (absorbRemaining > 0.0F) {

                if (absorbRemaining == soulHeart && soulHeart % 2.0F == 1.0F) {

                    AbstractGui.blit(matrixStack, x, y, 9, 9, 9, 9, 18, 9); //17
                    absorbRemaining -= 1.0F;
                } else {

                    AbstractGui.blit(matrixStack, x, y, 0, 9, 9, 9, 18, 9); //16
                    absorbRemaining -= 2.0F;
                }
            }
        }
    }

    private static void drawBlackHealth(int width, int height, float blackHeartLevel) {
        PlayerEntity player = (PlayerEntity) Minecraft.getInstance().getRenderViewEntity();
        Minecraft minecraft = Minecraft.getInstance();
        MatrixStack matrixStack = new MatrixStack();

        ModifiableAttributeInstance attrMaxHealth = player.getAttribute(Attributes.MAX_HEALTH);
        float healthMax = (float) attrMaxHealth.getValue();
        float absorbHeart = player.getAbsorptionAmount();
        float soulHeart = CapabilityModel.getSoulHealthAmount();
        float blackHeart = MathHelper.ceil(blackHeartLevel);
        int healthRows = MathHelper.ceil((healthMax + blackHeart) / 2.0F / 10.0F);
        int rowHeight = Math.max(10 - (healthRows - 2), 3);
        int left_height = ForgeIngameGui.right_height;
        int left = width / 2 - 91;
        int top = height - left_height;
        left_height += (healthRows * rowHeight);
        if (rowHeight != 10) left_height += 10 - rowHeight;
        float absorbRemaining = blackHeart;

        for (int i = MathHelper.ceil((healthMax + absorbHeart + soulHeart + blackHeart) / 2.0F) - 1; i >= 0; --i) {

            int row = MathHelper.ceil((float) (i + 1) / 10.0F) - 1;
            int x = left + i % 10 * 8;
            int y = top - row * rowHeight;

            if (absorbRemaining > 0.0F) {

                if (absorbRemaining == blackHeart && blackHeart % 2.0F == 1.0F) {

                    AbstractGui.blit(matrixStack, x, y, 9, 9, 9, 9, 18, 9); //17
                    absorbRemaining -= 1.0F;
                } else {

                    AbstractGui.blit(matrixStack, x, y, 0, 9, 9, 9, 18, 9); //16
                    absorbRemaining -= 2.0F;
                }
            }
        }
    }

}
/*
 *
 *  * Copyright (c) 2024 Cozary
 *  *
 *  * This file is part of TBOI Trinkets, a mod made for Minecraft.
 *  *
 *  * TBOI Trinkets is free software: you can redistribute it and/or modify it
 *  * under the terms of the GNU General Public License as published
 *  * by the Free Software Foundation, either version 3 of the License, or
 *  * (at your option) any later version.
 *  *
 *  * TBOI Trinkets is distributed in the hope that it will be useful, but
 *  * WITHOUT ANY WARRANTY; without even the implied warranty of
 *  * MERCHANTABILITY or FITNESS FOR PARTICULAR PURPOSE.  See the
 *  * GNU General Public License for more details.
 *  *
 *  * You should have received a copy of the GNU General Public License
 *  * License along with TBOI Trinkets.  If not, see <https://www.gnu.org/licenses/>.
 *
 */

package com.cozary.tboit.entities;

import net.minecraft.entity.Entity;
import net.


"車罒日一",
    ["𨎆"] = "勹勹車",
    ["𨎇"] = "車馬",
    ["𨎈"] = "車夫士口",
    ["𨎉"] = "車⺁一龰",
    ["𨎊"] = "車衣儿口",
    ["𨎋"] = "車土",
    ["𨎌"] = "土九車",
    ["𨎍"] = "車广氺",
    ["𨎎"] = "車子阝",
    ["𨎏"] = "車口十口",
    ["𨎐"] = "土八土車",
    ["𨎑"] = "夫車車",
    ["𨎒"] = "車丿米心",
    ["𨎓"] = "車牛車",
    ["𨎔"] = "車廿口夫",
    ["𨎕"] = "車戊亼口",
    ["𨎖"] = "土車",
    ["𨎗"] = "車日勹彡",
    ["𨎘"] = "車爫貝",
    ["𨎙"] = "車口夊",
    ["𨎚"] = "車米田",
    ["𨎛"] = "車氵刀木",
    ["𨎜"] = "車宀土由",
    ["𨎝"] = "車一曲曰",
    ["𨎞"] = "車龶攵",
    ["𨎟"] = "車田各",
    ["𨎠"] = "田各車",
    ["𨎡"] = "車亠尸戈",
    ["𨎢"] = "車龴心",
    ["𨎣"] = "車穴各",
    ["𨎤"] = "車癶豆",
    ["𨎥"] = "車十田心",
    ["𨎦"] = "車自冫隹",
    ["𨎧"] = "車彡",
    ["𨎨"] = "車貝",
    ["𨎩"] = "車黃",
    ["𨎪"] = "車而而",
    ["𨎫"] = "車門月",
    ["𨎬"] = "車土土儿",
    ["𨎭"] = "車衣夕夕",
    ["𨎮"] = "車艹耳又",
    ["𨎯"] = "亻人人車",
    ["𨎰"] = "車亼口羽",
    ["𨎱"] = "車亠夕氏",
    ["𨎲"] = "車⻊各",
    ["𨎳"] = "車⺮夂丰",
    ["𨎴"] = "車田",
    ["𨎵"] = "車口耳戈",
    ["𨎶"] = "車虍豕",
    ["𨎷"] = "車广䒑",
    ["𨎸"] = "車予丿木",
    ["𨎹"] = "車亠囗禾",
    ["𨎺"] = "車亠囗示",
    ["𨎻"] = "車⺈厂言",
    ["𨎼"] = "車𠂇⺝車",


kbar_state.borrow().set_progress_value(1, (item.max_stage + 1) as u64);
                        }
                        label_stage.set_text(format!("Checking {}/{} files", item.files_checked, item.files_to_check).as_str());
                    }
                    _ => {
                        panic!();
                    }
                }
            }
        };
        main_context.spawn_local(future);
    }
}
<gh_stars>1-10
use std::{convert::TryFrom, num::ParseIntError};

use slotmap::{DefaultKey, SlotMap};

use crate::models::{Color, Color16};

mod utils;
pub use utils::{color_to16, color_to8};

#[derive(Default, Debug, Clone, Copy)]
struct RgbChannelAdjustment {
    adjust: Color,
}

impl RgbChannelAdjustment {
    pub fn apply(&self, input: u8, brightness: u8) -> Color {
        Color::new(
            ((brightness as u32 * input as u32 * self.adjust.red as u32) / 65025) as _,
            ((brightness as u32 * input as u32 * self.adjust.green as u32) / 65025) as _,
            ((brightness as u32 * input as u32 * self.adjust.blue as u32) / 65025) as _,
        )
    }
}

impl From<Color> for RgbChannelAdjustment {
    fn from(color: Color) -> Self {
        Self { adjust: color }
    }
}

#[derive(Debug, Clone, Copy)]
struct RgbTransform {
    backlight_enabled: bool,
    backlight_colored: bool,
    sum_brightness_low: f32,
    gamma_r: f32,
    gamma_g: f32,
    gamma_b: f32,
    brightness: u8,
    brightness_compensation: u8,
}

impl From<&crate::models::ChannelAdjustment> for RgbTransform {
    fn from(settings: &crate::models::ChannelAdjustment) -> Self {
        Self {
            backlight_enabled: false,
            backlight_colored: settings.backlight_colored,
            sum_brightness_low: 765.0
                * ((2.0f32.powf(settings.backlight_threshold as f32 / 100.0 * 2.0) - 1.0) / 3.0),
            gamma_r: settings.gamma_red,
            gamma_g: settings.gamma_green,
            gamma_b: settings.gamma_blue,
            brightness: settings.brightness as _,
            brightness_compensation: settings.brightness_compensation as _,
        }
    }
}

#[derive(Default, Debug, Clone, Copy)]
struct BrightnessComponents {
    pub rgb: u8,
    pub cmy: u8,
    pub w: u8,
}

impl RgbTransform {
    fn gamma(x: u8, gamma: f32) -> u8 {
        ((x as f32 / 255.0).powf(gamma) * 255.0) as u8
    }

    pub fn brightness_components(&self) -> BrightnessComponents {
        let fw = self.brightness_compensation as f32 * 2.0 / 100.0 + 1.0;
        let fcmy = self.brightness_compensation as f32 / 100.0 + 1.0;

        if self.brightness > 0 {
            let b_in = if self.brightness < 50 {
                -0.09 * self.brightness as f32 + 7.5
            } else {
                -0.04 * self.brightness as f32 + 5.0
            };

            BrightnessComponents {
                rgb: (255.0 / b_in).min(255.0) as u8,
                cmy: (255.0 / (b_in * fcmy)).min(255.0) as u8,
                w: (255.0 / (b_in * fw)).min(255.0) as u8,
            }
        } else {
            BrightnessComponents::default()
        }
    }

    pub fn apply(&self, input: Color) -> Color {
        let (r, g, b) = input.into_components();

        // Apply gamma
        let (r, g,


 246,
    7, 19, 31, 43, 55, 67, 79, 91, 103, 115, 127, 139, 151, 163, 175, 187, 199, 211, 223, 235, 247,
    8, 20, 32, 44, 56, 68, 80, 92, 104, 116, 128, 140, 152, 164, 176, 188, 200, 212, 224, 236, 248,
    9, 21, 33, 45, 57, 69, 81, 93, 105, 117, 129, 141, 153, 165, 177, 189, 201, 213, 225, 237, 249,
    10, 22, 34, 46, 58, 70, 82, 94, 106, 118, 130, 142, 154, 166, 178, 190, 202, 214, 226, 238, 250,
    11, 23, 35, 47, 59, 71, 83, 95, 107, 119, 131, 143, 155, 167, 179, 191, 203, 215, 227, 239, 251,
};

const int DSDNXDN::CACLong::m_PunctureList[60] = {
    1, 7, 9, 11, 19,
    27, 33, 35, 37, 45,
    53, 59, 61, 63, 71,
    79, 85, 87, 89, 97,
    105, 111, 113, 115, 123,
    131, 137, 139, 141, 149,
    157, 163, 165, 167, 175,
    183, 189, 191, 193, 201,
    209, 215, 217, 219, 227,
    235, 241, 243, 245, 253,
    261, 267, 269, 271, 279,
    287, 293, 295, 297, 305
};

const int DSDNXDN::FACCH1::m_Interleave[144] = {
    0, 16, 32, 48, 64, 80, 96, 112, 128,
    1, 17, 33, 49, 65, 81, 97, 113, 129,
    2, 18, 34, 50, 66, 82, 98, 114, 130,
    3, 19, 35, 51, 67, 83, 99, 115, 131,
    4, 20, 36, 52, 68, 84, 100, 116, 132,
    5, 21, 37, 53, 69, 85, 101, 117, 133,
    6, 22, 38, 54, 70, 86, 102, 118, 134,
    7, 23, 39, 55, 71, 87, 103, 119, 135,
    8, 24, 40, 56, 72, 88, 104, 120, 136,
    9, 25, 41, 57, 73, 89, 105, 121, 137,
    10, 26, 42, 58, 74, 90, 106, 122, 138,
    11, 27, 43, 59, 75, 91, 107, 123, 139,
    12, 28, 44, 60, 76, 92, 108, 124, 140,
    13, 29, 45, 61, 77, 93, 109, 125, 141,
    14, 30, 46, 62, 78, 94, 110, 126, 142,
    15, 31, 47, 63, 79, 95, 111, 127, 143,
};

const int DSDNXDN::FACCH1::m_PunctureList[48] = {
    1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65, 69, 73, 77,
    81, 85, 89, 93, 97, 101, 105, 109, 113, 117, 121, 125, 129, 133, 137, 141, 145,
    149, 153, 157, 161, 165, 169, 173, 177, 181, 185, 189,
};

const int DSDNXDN::UDCH::m_Interleave[348] = {
    0, 12, 24, 36, 48, 60, 72, 84, 96, 108, 120, 132, 144, 156, 168, 180, 192, 204, 216, 228, 240, 252, 264, 276, 288, 300, 312, 324, 336,
    1, 13, 25, 37, 49, 61, 73, 85, 97, 109, 121, 133, 145, 157, 169, 181, 193, 205, 217, 229, 241, 253, 265, 277, 289, 301, 313, 325, 337,
    2, 14, 26, 38, 50,


hJq7046827/2AojmRpnmiqrmzrvnAsz3Rt33iu73zv/8Bgp1AYDAgEQwJwCCAiADs=")}#tv_tree table.tv_tree td.tv_vline_b{vertical-align:top}[dir] #tv_tree table.tv_tree td.tv_vline_b{background-image:url("data:image/gif;base64,R0lGODlhAQDECaEDAICpyYGpzIKry////yH5BAEKAAMALAAAAAABAOIEAAIjjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNcbIBQAOw==")}#tv_tree table.tv_tree td.tv_vline_c,.tv_in table.tv_tree td.tv_vline_h{vertical-align:middle}#tv_tree table.tv_tree td.tv_vline_c{height:1px}#tv_tree table.tv_tree div.tv_vline{width:1px}#tv_tree table.tv_tree div.tv_vline_b,#tv_tree table.tv_tree div.tv_vline_t{height:50%}#tv_tree table.tv_tree div.tv_vline_c{height:1px;overflow:hidden}#tv_tree table.tv_tree div.tv_vline_h{height:100%}#tv_tree div.tv_hline,#tv_tree td.tv_hline{overflow:hidden;width:8px}#tv_tree div.tv_hline{height:1px}#tv_tree div.tv_box{border-collapse:collapse;width:180px}[dir] #tv_tree div.tv_box{background:#fffdfd;border:thin outset #81a9cb;border-radius:4px;cursor:help;margin-bottom:2px;margin-top:2px;padding:0}[dir=ltr] #tv_tree div.tv_box{box-shadow:1px 1px 2px #cfcfdf}[dir=rtl] #tv_tree div.tv_box{box-shadow:-1px 1px 2px #cfcfdf}#tv_tree div.boxExpanded{width:250px}#tv_tree div.tv_box div.tvM{color:#200}[dir] #tv_tree div.tv_box div.tvM{background:#f5fdff}#tv_tree div.tv_box div.tvF{color:#002}[dir] #tv_tree div.tv_box div.tvF{background:#fff8f5}#tv_tree div.tv_box span.tvSexSymbol{font-family:x-large,serif;font-weight:700;vertical-align:top}[dir] #tv_tree div.tv_box span.tvSexSymbol{margin:1px}#tv_tree div.tv_box span.tvM{color:#8f8fdf}#tv_tree div.tv_box span.tvF{color:#df8f8f}[dir] #tv_tree .tv_box div.tvF,[dir] #tv_tree div.tv_box div.tvM{border:0;border-radius:4px;clear:both;margin:0;padding:1px 4px}#tv_tree div.tv_box i.dates{font-size:75%}[dir=ltr] #tv_tree div.tv_box i.dates{float:right;margin-left:4px}[dir=rtl] #tv_tree div.tv_box i.dates{float:left;margin-right:4px}#tv_tree div.tv_box img.tv_treelink{height:15px;width:15px}[dir=ltr] #tv_tree div.tv_box img.tv_treelink{float:right}[dir=rtl] #tv_tree div.tv_box img.tv_treelink{float:left}#tv_tree div.tv_box img.tv_box_loading{height:12px;width:12px}[dir] #tv_tree div.tv_box img.tv_box_loading{margin:2px}[dir=ltr] #tv_tree div.tv_box img.tv_box_loading{float:right}[dir=rtl] #tv_tree div.tv_box img.tv_box_loading{float:left}#tv_tree div.tv_box div