 is governed by a
// BSD-style license that can be found in the LICENSE file.

/*@testedFeatures=inference*/
library test;

test() {
  /*@returnType=int*/ f0() => 42;
  /*@returnType=Future<int>*/ f1() async => 42;

  /*@returnType=int*/ f2() {
    return 42;
  }

  /*@returnType=Future<int>*/ f3() async {
    return 42;
  }

  /*@returnType=Iterable<int>*/ f4() sync* {
    yield 42;
  }

  /*@returnType=Stream<int>*/ f5() async* {
    yield 42;
  }

  num f6() => 42;

  /*@ returnType=dynamic */ f7() => f7();
  /*@returnType=Stream<int>*/ f8() => f5();

  var /*@type=() -> int*/ v0 = f0;
  var /*@type=() -> Future<int>*/ v1 = f1;
  var /*@type=() -> int*/ v2 = f2;
  var /*@type=() -> Future<int>*/ v3 = f3;
  var /*@type=() -> Iterable<int>*/ v4 = f4;
  var /*@type=() -> Stream<int>*/ v5 = f5;
  var /*@type=() -> num*/ v6 = f6;
  var /*@type=() -> dynamic*/ v7 = f7;
  var /*@type=() -> Stream<int>*/ v8 = f8;
}

main() {}
// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

/*@testedFeatures=inference*/
library test;

import 'dart:async';

class MyFuture<T> implements Future<T> {
  MyFuture() {}
  MyFuture.value(T x) {}
  dynamic noSuchMethod(invocation) => null;
  MyFuture<S> then<S>(FutureOr<S> f(T x), {Function? onError}) => throw '';
}

void test(MyFuture f) {
  Future<int> t1 = f. /*@typeArgs=int*/ /*@target=MyFuture.then*/ then(
      /*@returnType=Future<int>*/ (/*@ type=dynamic */ _) async =>
          await new Future<int>.value(3));
  Future<int> t2 = f. /*@typeArgs=int*/ /*@target=MyFuture.then*/ then(
      /*@returnType=Future<int>*/ (/*@ type=dynamic */ _) async {
    return await new Future<int>.value(3);
  });
  Future<int> t3 = f. /*@typeArgs=int*/ /*@target=MyFuture.then*/ then(
      /*@returnType=Future<int>*/ (/*@ type=dynamic */ _) async => 3);
  Future<int> t4 = f. /*@typeArgs=int*/ /*@target=MyFuture.then*/ then(
      /*@returnType=Future<int>*/ (/*@ type=dynamic */ _) async {
    return 3;
  });
  Future<int> t5 = f. /*@typeArgs=int*/ /*@target=MyFuture.then*/ then(
      /*@returnType=Future<int>*/ (/*@ type=dynamic */ _) =>
          new Future<int>.value(3));
  Future<int> t6 = f. /*@typeArgs=int*/ /*@target=MyFuture.then*/ then(
      /*@returnType=Future<int>*/ (/*@ type=dynamic */ _) {
    return new Future<int>.value(3);
  });
  Future<int> t7 = f. /*@typeArgs=int*/ /*@target=MyFuture.then*/ then(
      /*@returnType=Future<int>*/ (/*@ type=dynamic */ _) async =>
          new Future<int>.value(3));
  Future<int> t8 = f.


28f, 0.999660015f,
            0.999698818f, 0.999735296f, 0.999769390f, 0.999801159f,
            0.999830604f, 0.999857664f, 0.999882340f, 0.999904692f,
            0.999924719f, 0.999942362f, 0.999957621f, 0.999970615f,
            0.999981165f, 0.999989390f, 0.999995291f, 0.999998808f,
        };

        public static readonly short[] gArctanTable = {
            0x0000, 0x000A, 0x0014, 0x001F, 0x0029, 0x0033, 0x003D, 0x0047,
            0x0051, 0x005C, 0x0066, 0x0070, 0x007A, 0x0084, 0x008F, 0x0099,
            0x00A3, 0x00AD, 0x00B7, 0x00C2, 0x00CC, 0x00D6, 0x00E0, 0x00EA,
            0x00F4, 0x00FF, 0x0109, 0x0113, 0x011D, 0x0127, 0x0131, 0x013C,
            0x0146, 0x0150, 0x015A, 0x0164, 0x016F, 0x0179, 0x0183, 0x018D,
            0x0197, 0x01A1, 0x01AC, 0x01B6, 0x01C0, 0x01CA, 0x01D4, 0x01DE,
            0x01E9, 0x01F3, 0x01FD, 0x0207, 0x0211, 0x021B, 0x0226, 0x0230,
            0x023A, 0x0244, 0x024E, 0x0258, 0x0262, 0x026D, 0x0277, 0x0281,
            0x028B, 0x0295, 0x029F, 0x02A9, 0x02B4, 0x02BE, 0x02C8, 0x02D2,
            0x02DC, 0x02E6, 0x02F0, 0x02FB, 0x0305, 0x030F, 0x0319, 0x0323,
            0x032D, 0x0337, 0x0341, 0x034C, 0x0356, 0x0360, 0x036A, 0x0374,
            0x037E, 0x0388, 0x0392, 0x039C, 0x03A7, 0x03B1, 0x03BB, 0x03C5,
            0x03CF, 0x03D9, 0x03E3, 0x03ED, 0x03F7, 0x0401, 0x040C, 0x0416,
            0x0420, 0x042A, 0x0434, 0x043E, 0x0448, 0x0452, 0x045C, 0x0466,
            0x0470, 0x047A, 0x0484, 0x048E, 0x0499, 0x04A3, 0x04AD, 0x04B7,
            0x04C1, 0x04CB, 0x04D5, 0x04DF, 0x04E9, 0x04F3, 0x04FD, 0x0507,
            0x0511, 0x051B, 0x0525, 0x052F, 0x0539, 0x0543, 0x054D, 0x0557,
            0x0561, 0x056B, 0x0575, 0x057F, 0x0589, 0x0593, 0x059D, 0x05A7,
            0x05B1, 0x05BB, 0x05C5, 0x05CF, 0x05D9, 0x05E3, 0x05ED, 0x05F7,
            0x0601, 0x060B, 0x0615, 0x061F, 0x0629, 0x0633, 0x063D, 0x0647,
            0x0651, 0x065B, 0x0665, 0x066E


search {display: block;}
		.right-panel .right-panel-search >* {width: 100%;margin: 0;margin-top: 15px;}
	}
	.adminui-main > .el-container >*:first-child:not(.el-aside):not(.el-header) {border: 0;margin-top: 0;}
	.adminui-main > .el-container >*:first-child:not(.el-aside):not(.el-header) + .el-aside {margin-top: 0;}
	.adminui-main > .el-container > .el-aside {border-bottom: 1px solid var(--el-border-color-light)!important;}
	.adminui-main > .el-container > .el-container {border-top: 1px solid var(--el-border-color-light);border-bottom: 1px solid var(--el-border-color-light);margin-top: 15px;}
	.adminui-main > .el-container > .el-container + .el-aside {border-top: 1px solid var(--el-border-color-light);margin-top: 15px;}
	.adminui-main > .el-container > .el-header {@extend .headerPublic;}
	.adminui-main > .el-container > .el-main.nopadding {border-top: 1px solid var(--el-border-color-light);border-bottom: 1px solid var(--el-border-color-light);margin-top: 15px;}
	.adminui-main > .el-container > .el-main + .el-aside {border-left: 0!important;border-top: 1px solid var(--el-border-color-light);margin-top: 15px;}
	.adminui-main > .el-container > .el-footer {margin-top: 15px;border-bottom: 1px solid var(--el-border-color-light);}
	.adminui-main > .el-container > .el-container > .el-header {@extend .headerPublic}
	.adminui-main > .el-container > .el-container > .el-header .left-panel {display: block;}
	.adminui-main > .el-container > .el-container > .el-header .right-panel {display: block;margin-top: 15px;}

	.sc-page {width: 100%;margin: 0;}

	.common-main .el-form {width: 100% !important;}
	.common-header-logo label {display: none;}
	.common-header-title {display: none;}
}
/*! normalize.css v3.0.1 | MIT License | git.io/normalize */

/**
 * 1. Set default font family to sans-serif.
 * 2. Prevent iOS text size adjust after orientation change, without disabling
 *    user zoom.
 */

html {
  font-family: @font_family; /* 1 */
  -ms-text-size-adjust: 100%; /* 2 */
  -webkit-text-size-adjust: 100%; /* 2 */
}

/**
 * Remove default margin.
 */

body {
  margin: 0;
}

/* HTML5 display definitions
   ========================================================================== */

/**
 * Correct `block` display not defined for any HTML5 element in IE 8/9.
 * Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox.
 * Correct `block` display not defined for `main` in IE 11.
 */

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
  display: block;
}

/**
 * 1. Correct `inline-block` display not defined in IE 8/9.
 * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
 */

audio,
canvas,
progress,
video {
  display: inline-block; /* 1 */
  vertical-align: baseline; /* 2 */
}

/**
 * Prevent modern browsers from displaying `audio` without controls.
 * Remove excess height in iOS 5 devices.
 */

audio:not([controls]) {
  display: none;
  height: 0;
}

/**
 * Address `[hidden]` styling not present in IE 8/9/10.
 * Hide the `template` element in IE 8/9/11, S


productInfoSkuModel -> {
                // 首先查询商品库库存是否充足
                CommodityStocks commodityStocks = new CommodityStocks();
                commodityStocks.setProductSkuId(productInfoSkuModel.getId());
                commodityStocks.setLockedNumber(productInfoSkuModel.getProductCount());
                // 进行商品拆分订单
                OrderDetail orderDetail = new OrderDetail();
                orderDetail.setDetailId(idWorker.nextId());
                orderDetail.setOrderId(order.getId());
                orderDetail.setCreateTime(new Date());
                orderDetail.setMerchantNumber(productInfoSkuModel.getMerchantNumber());
                orderDetail.setProductCount(productInfoSkuModel.getProductCount());
                orderDetail.setProductImage(productInfoSkuModel.getProductImage());
                orderDetail.setProductPrice(productInfoSkuModel.getPrice());
                orderDetail.setProductSkuId(productInfoSkuModel.getId());
                orderDetail.setProductTitle(productInfoSkuModel.getProductTitle());
                // 创建SkuModel
                ProductSkuModel productSkuModel = new ProductSkuModel();
                productSkuModel.setId(productInfoSkuModel.getId());
                productSkuModel.setImages(productInfoSkuModel.getImages());
                productSkuModel.setPrice(productInfoSkuModel.getPrice());
                productSkuModel.setTitle(productInfoSkuModel.getTitle());
                // 将其序列化
                String skuDetail = JsonUtils.serialize(productSkuModel);
                orderDetail.setProductSkuDetail(skuDetail);
                // 添加订单明细
                this.orderDetailMapper.saveOrderDetail(orderDetail);
                // 保存子订单状态
                OrderStatus orderStatus = new OrderStatus();
                orderStatus.setOrderId(orderDetail.getDetailId());
                orderStatus.setCreateTime(orderDetail.getCreateTime());
                // 默认这是为未支付状态
                orderStatus.setOrderStatus(1);
                this.orderStatusMapper.saveOrderStatus(orderStatus);
                commodityStockses.add(commodityStocks);
            });
            log.info("生成订单，订单编号：{}，用户id：{}", order.getId(), memberInfo.getMemberId());
            // 将订单信息保存到redis缓存中,时间为10分钟，10分钟过后将其置为失效订单
            // 将订单id作为Key，订单信息作为value
            Map<String, Object> newMap = new HashMap<>(3);
            newMap.put("orderId", order.getId());
            newMap.put("totalPay", order.getTotalPay());
            newMap.put("commodityStocks", JsonUtils.serialize(commodityStockses));
            // 将map进行序列化
            String json = JsonUtils.serialize(map);
            assert json != null;
            this.stringRedisTemplate.opsForValue().set(String.valueOf(order.getId()), json, 60 * 10, TimeUnit.SECONDS);
            log.info("订单加入Redis缓存，订单编号：{}，用户id：{}，将在10分钟后过期", order.getId(), memberInfo.getMemberId());
            return order.getId();
        } catch (Exception e) {
            e.printStackTrace();
            throw new FCException("系统错误");
        }
    }

    /**
     * 查询web端商户下的订单列表
     *
     * @param orderSearchRequest
     * @return
     */
    @Override
    public FCResponse<DataResponse<List<OrderPageResponse>>> getWebPageMerchantOrder(OrderSearchRequest orderSearchRequest) {

        LoginInfoData loginInfoData = AuthInterceptor.getLoginInfo();
        if (ObjectUtils.isEmpty(loginInfoData)) {


            intInputFormatter: this.intInputFormatter,
            allowEmpty: true,
            allowZero: true,
            initialValue: this.widget.prev.amountSats,
          ),

          const SizedBox(height: Space.s700),

          PaymentNoteInput(
            fieldKey: this.descriptionFieldKey,
            onSubmit: this.onConfirm,
            initialNote: this.widget.prev.description,
            hintText: "Optional description (visible to sender)",
          ),

          const SizedBox(height: Space.s400),
        ],
        bottom: LxFilledButton(
          label: const Text("Confirm"),
          icon: const Icon(LxIcons.next),
          onTap: this.onConfirm,
        ),
      ),
    );
  }
}
import 'dart:io' show Platform;

import 'package:ansicolor/ansicolor.dart';
import 'package:bloc/bloc.dart';
import 'package:flutter/foundation.dart';
import 'package:intl/intl.dart';
import 'package:loggy/loggy.dart';

import '../debug_log.dart';
import 'state_logger.dart';

const LogLevel traceLevel = LogLevel('Trace', 1);

String wrapWithLogColor(LogLevel? level, String text) {
  // XXX: https://github.com/flutter/flutter/issues/64491
  if (!kIsWeb && Platform.isIOS) {
    return text;
  }

  if (level == null) {
    return text;
  }
  final pen = AnsiPen();
  ansiColorDisabled = false;
  switch (level) {
    case LogLevel.error:
      pen
        ..reset()
        ..red(bold: true);
      return pen(text);
    case LogLevel.warning:
      pen
        ..reset()
        ..yellow(bold: true);
      return pen(text);
    case LogLevel.info:
      pen
        ..reset()
        ..white(bold: true);
      return pen(text);
    case LogLevel.debug:
      pen
        ..reset()
        ..green(bold: true);
      return pen(text);
    case traceLevel:
      pen
        ..reset()
        ..blue(bold: true);
      return pen(text);
  }
  return text;
}

final DateFormat _dateFormatter = DateFormat('HH:mm:ss.SSS');

extension PrettyPrintLogRecord on LogRecord {
  String pretty() {
    final tm = _dateFormatter.format(time.toLocal());
    final lev = logLevelEmoji(level);
    final lstr = wrapWithLogColor(level, tm);
    return '$lstr $lev $message';
  }
}

List<LogLevel> logLevels = [
  LogLevel.error,
  LogLevel.warning,
  LogLevel.info,
  LogLevel.debug,
  traceLevel,
];

String logLevelName(LogLevel logLevel) {
  switch (logLevel) {
    case traceLevel:
      return 'TRACE';
    case LogLevel.debug:
      return 'DEBUG';
    case LogLevel.info:
      return 'INFO';
    case LogLevel.warning:
      return 'WARNING';
    case LogLevel.error:
      return 'ERROR';
  }
  return '???';
}

String logLevelEmoji(LogLevel logLevel) {
  switch (logLevel) {
    case traceLevel:
      return '👾';
    case LogLevel.debug:
      return '🐛';
    case LogLevel.info:
      return '💡';
    case LogLevel.warning:
      return '🍋';
    case LogLevel.error:
      return '🛑';
  }
  return '❓';
}

class CallbackPrinter extends LoggyPrinter {
  CallbackPrinter() : super();

  void Function(LogRecord)? callback;

  @override
  void onLog(LogRecord record) {
    final out = record.pretty().replaceAll('\uFFFD', '');

    if (!kIsWeb && Platform.isAndroid) {
      debugPrint(out);
    } else {
      debugPrintSynchronously(out);
    }
    // DebugLogger().log(out);
    callback?.call(record);
  }


c,e )
        );

        let block2 = blk!(prev = block1;
            tx!(bld; coinbase => f;12 ),
            tx!(bld; c => g )
        );

        //        add_block(&mut store, &block0);

        println!("block1 = {:?}", block1);
        //println!("tx1 = {:?}", ::hash::Hash32Buf::double_sha256(&tx1));
        add_block(&mut store, &block0);
        add_block(&mut store, &block2);
        add_block(&mut store, &block1);

    }

}

// WARNING:  This file was autogenerated by jni-bindgen.  Any changes to this file may be lost!!!

#[cfg(any(feature = "all", feature = "android-widget-ScrollView"))]
__jni_bindgen! {
    /// public class [ScrollView](https://developer.android.com/reference/android/widget/ScrollView.html)
    ///
    /// Required feature: android-widget-ScrollView
    public class ScrollView ("android/widget/ScrollView") extends crate::android::widget::FrameLayout {

        /// [ScrollView](https://developer.android.com/reference/android/widget/ScrollView.html#ScrollView(android.content.Context))
        ///
        /// Required features: "android-content-Context"
        #[cfg(any(feature = "all", all(feature = "android-content-Context")))]
        pub fn new_Context<'env>(__jni_env: &'env __jni_bindgen::Env, arg0: impl __jni_bindgen::std::convert::Into<__jni_bindgen::std::option::Option<&'env crate::android::content::Context>>) -> __jni_bindgen::std::result::Result<__jni_bindgen::Local<'env, crate::android::widget::ScrollView>, __jni_bindgen::Local<'env, crate::java::lang::Throwable>> {
            // class.path == "android/widget/ScrollView", java.flags == PUBLIC, .name == "<init>", .descriptor == "(Landroid/content/Context;)V"
            unsafe {
                let __jni_args = [__jni_bindgen::AsJValue::as_jvalue(&arg0.into())];
                let (__jni_class, __jni_method) = __jni_env.require_class_method("android/widget/ScrollView\0", "<init>\0", "(Landroid/content/Context;)V\0");
                __jni_env.new_object_a(__jni_class, __jni_method, __jni_args.as_ptr())
            }
        }

        /// [ScrollView](https://developer.android.com/reference/android/widget/ScrollView.html#ScrollView(android.content.Context,%20android.util.AttributeSet))
        ///
        /// Required features: "android-content-Context", "android-util-AttributeSet"
        #[cfg(any(feature = "all", all(feature = "android-content-Context", feature = "android-util-AttributeSet")))]
        pub fn new_Context_AttributeSet<'env>(__jni_env: &'env __jni_bindgen::Env, arg0: impl __jni_bindgen::std::convert::Into<__jni_bindgen::std::option::Option<&'env crate::android::content::Context>>, arg1: impl __jni_bindgen::std::convert::Into<__jni_bindgen::std::option::Option<&'env crate::android::util::AttributeSet>>) -> __jni_bindgen::std::result::Result<__jni_bindgen::Local<'env, crate::android::widget::ScrollView>, __jni_bindgen::Local<'env, crate::java::lang::Throwable>> {
            // class.path == "android/widget/ScrollView", java.flags == PUBLIC, .name == "<init>", .descriptor == "(Landroid/content/Context;Landroid/util/AttributeSet;)V"
            unsafe {
                let __jni_args


MODE 4 REPLY Switch, OUT/A/B")
F_16C_50:defineToggleSwitch("IFF_M4_MONITOR_SW", 35, 3005, 544, "IFF", "IFF MODE 4 MONITOR Switch, OUT/AUDIO")
F_16C_50:define3PosTumb("IFF_ENABLE_SW", 35, 3006, 553, "IFF", "IFF ENABLE Switch, M1/M3 /OFF/ M3/MS")
F_16C_50:defineSpringloaded_3PosTumb("IFF_M1_SEL_1", 35, 3008, 3007, 545, "IFF", "IFF MODE 1 Selector Lever, DIGIT 1")
F_16C_50:defineSpringloaded_3PosTumb("IFF_M1_SEL_2", 35, 3010, 3009, 547, "IFF", "IFF MODE 1 Selector Lever, DIGIT 2")
F_16C_50:defineSpringloaded_3PosTumb("IFF_M3_SEL_1", 35, 3012, 3011, 549, "IFF", "IFF MODE 3 Selector Lever, DIGIT 1")
F_16C_50:defineSpringloaded_3PosTumb("IFF_M3_SEL_2", 35, 3014, 3013, 551, "IFF", "IFF MODE 3 Selector Lever, DIGIT 2")

--KY-58
F_16C_50:defineMultipositionSwitch("KY58_MODE_KNB", 42, 3001, 705, 4, 0.1, "KY-58", "KY-58 MODE Knob, P/C/LD/RV")
F_16C_50:definePotentiometer("KY58_VOL_KNB", 42, 3005, 708, nil, "KY-58", "KY-58 VOLUME Knob")
F_16C_50:defineMultipositionSwitch("KY58_FILL_KNB", 42, 3002, 706, 8, 0.1, "KY-58", "KY-58 FILL Knob, Z 1-5/1/2/3/4/5/6/Z ALL")
F_16C_50:defineMultipositionSwitch("KY58_PWR_KNB", 42, 3004, 707, 3, 0.5, "KY-58", "KY-58 Power Knob, OFF/ON/TD")
F_16C_50:define3PosTumb("PLAIN_CIPHER_SW", 39, 3016, 701, "KY-58", "PLAIN Cipher Switch, CRAD 1/PLAIN/CRAD 2")
F_16C_50:defineToggleSwitch("ZEROIZE_SW_COVER", 39, 3017, 694, "KY-58", "ZEROIZE Switch Cover, OPEN/CLOSE")
F_16C_50:define3PosTumb("ZEROIZE_SW", 39, 3018, 695, "KY-58", "ZEROIZE Switch, OFP/OFF/DATA")

--HMCS
F_16C_50:definePotentiometer("HMCS_INT_KNB", 30, 3001, 392, nil, "HMCS", "HMCS SYMBOLOGY INT Knob")

--RWR
F_16C_50:definePotentiometer("RWR_INTENS_KNB", 33, 3001, 140, nil, "RWR", "RWR Intensity Knob - Rotate to adjust brightness")
F_16C_50:definePushButton("RWR_HANDOFF_BTN", 33, 3002, 141, "RWR", "RWR Indicator Control HANDOFF Button")
F_16C_50:definePushButton("RWR_LAUNCH_BTN", 33, 3003, 143, "RWR", "RWR Indicator Control LAUNCH Button")
F_16C_50:definePushButton("RWR_MODE_BTN", 33, 3004, 145, "RWR", "RWR Indicator Control MODE Button")
F_16C_50:definePushButton("RWR_UNKNOWN_SHIP_BTN", 33, 3005, 147, "RWR", "RWR Indicator Control UNKNOWN SHIP Button")
F_16C_50:definePushButton("RWR_SYS_TEST_BT


MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात"===t?e<4?e:e+12:"सुबह"===t?e:"दोपहर"===t?e>=10?e:e+12:"शाम"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})}(n(5))},function(e,t,n){!function(e){"use strict";function t(e,t,n){var r=e+" ";switch(n){case"ss":return r+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return t?"jedna minuta":"jedne minute";case"mm":return r+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return t?"jedan sat":"jednog sata";case"hh":return r+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return r+=1===e?"dan":"dana";case"MM":return r+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return r+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact


Mitchell

[cxx-abi-dev] Mangling follow-up

Mark Mitchell

[cxx-abi-dev] RE: [cxx-abi] [cxx-abi-dev] Mangling unary plus

Mark Mitchell

[cxx-abi-dev] RE: [cxx-abi] [cxx-abi-dev] Mangling unary plus

Mark Mitchell

[cxx-abi-dev] RE: [cxx-abi] [cxx-abi-dev] Mangling unary plus

Mark Mitchell

[cxx-abi-dev] RE: [cxx-abi] [cxx-abi-dev] Mangling unary plus

Mark Mitchell

[cxx-abi-dev] RE: [cxx-abi] [cxx-abi-dev] Mangling unary plus

Mark Mitchell

Use of "sr" mangling code

Mark Mitchell

[cxx-abi-dev] Use of "sr" mangling code

Mark Mitchell

When to emit deleting destructor

Mark Mitchell

[cxx-abi-dev] When to emit deleting destructor

Mark Mitchell

[cxx-abi-dev] When to emit deleting destructor

Mark Mitchell

Mangling of floating-point literals

Mark Mitchell

Mangling of named constants

Mark Mitchell

[cxx-abi-dev] Mangling of named constants

Mark Mitchell

[cxx-abi-dev] Mangling of floating-point literals

Mark Mitchell

Pointer-to-member-function mangling

Mark Mitchell

[cxx-abi] [cxx-abi-dev] Pointer-to-member-function mangling

Mark Mitchell

Update pointer to member function substitution language

Mark Mitchell

[cxx-abi-dev] When to emit deleting destructo


       ASSERT_NE(unit, nullptr);
        unit_queue.makeUnitTaken(unit);

        if (taken_units.size() >= buffer_size_pkts)
        {
            for_each(taken_units.begin(), taken_units.end(),
                [&unit_queue](CUnit* u) { unit_queue.makeUnitFree(u); });

            taken_units.clear();
        }

        taken_units.push_back(unit);
        EXPECT_LE(unit_queue.capacity(), 2 * buffer_size_pkts)
            << "Buffer capacity should not exceed two queues of 4 units";
    }
}
#include <vector>
#include <algorithm>
#include <future>

#include "gtest/gtest.h"
#include "test_env.h"
#include "packet.h"
#include "fec.h"
#include "core.h"
#include "packetfilter.h"
#include "packetfilter_api.h"

// For direct imp access
#include "api.h"

using namespace std;
using namespace srt;

class TestFECRebuilding: public srt::Test
{
protected:
    FECFilterBuiltin* fec = nullptr;
    vector<SrtPacket> provided;
    vector<unique_ptr<CPacket>> source;
    int sockid = 54321;
    int isn = 123456;
    size_t plsize = 1316;

    TestFECRebuilding()
    {
        // Required to make ParseCorrectorConfig work
    }

    void setup() override
    {
        int timestamp = 10;

        SrtFilterInitializer init = {
            sockid,
            isn - 1, // It's passed in this form to PacketFilter constructor, it should increase it
            isn - 1, // XXX Probably this better be changed.
            plsize,
            CSrtConfig::DEF_BUFFER_SIZE
        };

        // Make configuration row-only with size 7
        string conf = "fec,rows:1,cols:7";

        provided.clear();

        fec = new FECFilterBuiltin(init, provided, conf);

        int32_t seq = isn;

        for (int i = 0; i < 7; ++i)
        {
            source.emplace_back(new CPacket);
            CPacket& p = *source.back();

            p.allocate(SRT_LIVE_MAX_PLSIZE);

            uint32_t* hdr = p.getHeader();

            // Fill in the values
            hdr[SRT_PH_SEQNO] = seq;
            hdr[SRT_PH_MSGNO] = 1 | MSGNO_PACKET_BOUNDARY::wrap(PB_SOLO);
            hdr[SRT_PH_ID] = sockid;
            hdr[SRT_PH_TIMESTAMP] = timestamp;

            // Fill in the contents.
            // Randomly chose the size

            int minsize = 732;
            int divergence = int(plsize) - minsize - 1;
            size_t length = minsize + rand() % divergence;

            p.setLength(length);
            for (size_t b = 0; b < length; ++b)
            {
                p.data()[b] = rand() % 255;
            }

            timestamp += 10;
            seq = CSeqNo::incseq(seq);
        }
    }

    void teardown() override
    {
        delete fec;
    }
};

namespace srt {
    class TestMockCUDT
    {
    public:
        CUDT* core;

        bool checkApplyFilterConfig(const string& s)
        {
            return core->checkApplyFilterConfig(s);
        }
    };
}

// The expected whole procedure of connection using FEC is
// expected to:
//
// 1. Successfully set


2
/* 000B4 80AFE364 3C0180B0 */  lui     $at, %hi(jtbl_80B01880)       ## $at = 80B00000
/* 000B8 80AFE368 00380821 */  addu    $at, $at, $t8
/* 000BC 80AFE36C 8C381880 */  lw      $t8, %lo(jtbl_80B01880)($at)
/* 000C0 80AFE370 03000008 */  jr      $t8
/* 000C4 80AFE374 00000000 */  nop
glabel L80AFE378
/* 000C8 80AFE378 03E00008 */  jr      $ra
/* 000CC 80AFE37C A08002D3 */  sb      $zero, 0x02D3($a0)         ## 000002D3
glabel L80AFE380
.L80AFE380:
/* 000D0 80AFE380 24190001 */  addiu   $t9, $zero, 0x0001         ## $t9 = 00000001
/* 000D4 80AFE384 A09902D3 */  sb      $t9, 0x02D3($a0)           ## 000002D3
/* 000D8 80AFE388 03E00008 */  jr      $ra
/* 000DC 80AFE38C 00000000 */  nop


, data?: DataT, authenticating: boolean = false
  ) => {
    // Pre-checks
    if (!authenticating && !socket().isConnected()) {
      logger.warn(`Attempting to send request on a non-authenticated socket: ${path}`);
      return Promise.reject('Not authorized');
    }

    if (!socket().nativeSocket) {
      logger.warn(`Attempting to send request without a socket: ${path}`);
      return Promise.reject('No socket');
    }

    const callbackId = getCallbackId();

    // Reporting
    invariant(path, 'Attempting socket request without a path');

    const ignored = eventIgnored(path, ignoredRequestPaths);
    if (!ignored) {
      logger.verbose(
        chalk.white.bold(callbackId.toString()),
        method,
        path,
        data ? filterPassword(data) : '(no data)'
      );
    }

    // Callback
    const resolver = Promise.pending();

    callbacks[callbackId.toString()] = {
      time: Date.now(),
      resolver,
      ignored,
    };

    // Actual request
    const request = {
      path,
      method,
      data,
      callback_id: callbackId,
    } as APIInternal.OutgoingRequest;

    socket().nativeSocket!.send(JSON.stringify(request));
    return resolver.promise;
  };

  // Report timed out requests
  // This is more about spotting backend issues, such as frozen threads and dropped responses
  // The socket itself should handle actual connection issues
  const reportTimeouts = () => {
    const now = Date.now();
    Object.keys(callbacks).forEach(callbackId => {
      const request = callbacks[callbackId];
      if (request.time + (requestTimeout * 1000) < now) {
        logger.warn(`Request ${callbackId} timed out`);
      }
    });
  };

  const cancelPendingRequests = (message: string = 'Request cancelled') => {
    Object.keys(callbacks)
      .forEach(id => {
        logger.verbose(`Canceling a pending request ${id} (${message})`);

        const cb: Callback = callbacks[id];
        cb.resolver.reject(message);
      });

    callbacks = {};
  };

  // Public
  const RequestsPublic: SocketRequestMethods = {
    put: (path, data) => {
      return sendRequest('PUT', path, data, );
    },

    patch: (path, data) => {
      return sendRequest('PATCH', path, data, );
    },

    post: (path, data) => {
      return sendRequest('POST', path, data);
    },

    delete: (path) => {
      //invariant(!data, 'No data is allowed for delete command');
      return sendRequest('DELETE', path);
    },

    get: (path) => {
      //invariant(!data, 'No data is allowed for get command');
      return sendRequest('GET', path);
    },

    getPendingRequestCount: () => {
      return Object.keys(callbacks).length;
    },
  };

  Object.assign(RequestsPublic, {
    reportRequestTimeouts: reportTimeouts, // internal method for testing
  });

  const formatFieldError = (error: API.FieldError) => {
    return error.field && error.code ? `${error.field} (${error.code})` : '';
  };

  // Shared for the socket
  const RequestsInternal = {
    onSocketConnected() {
      timeoutReportInterval = setInterval(reportTimeouts, 30000);
    },

    onSocketDisconnected() {
      // Clear callbacks
      cancelPendingRequests('Socket disconnected');

      clearTimeout(timeoutReportInterval);
    },

    handleMessage(messageObj: APIInternal.RequestSuccessResponse | APIInternal.RequestErrorResponse) {
      const id = messageObj.callback_id;
      if (!callbacks.hasOwnProperty(id)) {
        logger.warn('No pending request for an API


 dina meddelanden ?",
    "Reset all messages" : "Återställ alla meddelanden",
    "%s messages shown of %s messages stored in database." : "%s meddelanden som visas av %s meddelanden som lagras i databasen.",
    "Please select a conversation from the list to load it." : "Vänligen välj en konversation från listan för att läsa in den."
},
"nplurals=2; plural=(n != 1);");
OC.L10N.register(
    "ocsms",
    {
    "Phone Sync" : "Telefon bilan sinxronlash",
    "An app to sync SMS with your cloud" : "SMSni bulut bilan sinxronlash uchun ilova",
    "Cancel" : "Bekor qilish",
    "Confirm" : "Tasdiqlang",
    "No contact found." : "Hech qanday kontakt topilmadi.",
    "Settings" : "Sozlamalar",
    "Max messages to load per conversation" : "Har bir suhbat uchun yuklanadigan maksimal xabarlar",
    "Invalid message limit" : "Xabar cheklovi noto‘g‘ri",
    "Default country code" : "Standart mamlakat kodi",
    "Contact ordering" : "Buyurtma bilan bog'lanish",
    "Last message" : "Oxirgi xabar",
    "Label" : "Yorliq",
    "Reverse ?" : "Orqagami?",
    "Notification settings" : "Bildirishnoma sozlamalari",
    "Enable" : "Yoqish",
    "Disable" : "Oʻchirish",
    "Are you sure you want to wipe all your messages ?" : "Haqiqatan ham barcha xabarlaringizni oʻchirib tashlamoqchimisiz?",
    "Reset all messages" : "Barcha xabarlarni qayta o'rnating",
    "%s messages shown of %s messages stored in database." : "Maʼlumotlar bazasida saqlangan %s xabarning %s abari koʻrsatilgan.",
    "Please select a conversation from the list to load it." : "Iltimos, uni yuklash uchun roʻyxatdan suhbatni tanlang."
},
"nplurals=1; plural=0;");
OC.L10N.register(
    "ocsms",
    {
    "Phone Sync" : "Synchronisation du téléphone",
    "An app to sync SMS with your cloud" : "Une application pour synchroniser les SMS avec votre cloud",
    "Cancel" : "Annuler",
    "Confirm" : "Confirmer",
    "No contact found." : "Aucun contact trouvé.",
    "Settings" : "Paramètres",
    "Max messages to load per conversation" : "Nombre maximum de messages à charger par conversation",
    "Invalid message limit" : "Limite de message invalide",
    "Default country code" : "Code pays par défaut",
    "Contact ordering" : "Tri des contacts",
    "Last message" : "Dernier message",
    "Label" : "Étiquette",
    "Reverse ?" : "Inverser ?",
    "Notification settings" : "Paramètres de notification",
    "Enable" : "Activer",
    "Disable" : "Désactiver",


g2';
    const expected = new ObjectId('ffffffffffffffffffffffff');

    // when
    const result = decodeId(id);

    //expect
    expect(result).toStrictEqual(expected);
  });

  test('test encodeDocument: Document', () => {
    // given
    type Input = { _id: ObjectId; username: string };
    const user: Input = {
      _id: new ObjectId('ffffffffffffffffffffffff'),
      username: 'foo',
    };

    // when
    type Output = EncodeId<Input>;
    const result = encodeDocument<Output>(user);

    // expect
    expect(result).toStrictEqual({
      Id: '2KoAnowbOPcAbv5baxg2',
      username: 'foo',
    });
  });

  test('test encodeDocument: Array<Document>', () => {
    // given
    type Input = { _id: ObjectId; username: string };
    const users: Array<Input> = [
      {
        _id: new ObjectId('ffffffffffffffffffffffff'),
        username: 'foo',
      },
      {
        _id: new ObjectId('000000000000000000000000'),
        username: 'bar',
      },
    ];

    // when
    type Output = EncodeId<Input>;
    const result = encodeDocuments<Output>(users);

    // expect
    expect(result).toStrictEqual([
      {
        Id: '2KoAnowbOPcAbv5baxg2',
        username: 'foo',
      },
      {
        Id: '8B2aGOaeb9iElQnGQr9e',
        username: 'bar',
      },
    ]);
    expect(result[0].Id).toBe('2KoAnowbOPcAbv5baxg2'); // type conversion check
    expect(result[1].Id).toBe('8B2aGOaeb9iElQnGQr9e'); // type conversion check
  });

  test('test encodeDocument: {key: Document}', () => {
    // given
    type Input = {
      _id: ObjectId;
      username: string;
      item: {
        _id: ObjectId;
        itemname: string;
      };
    };
    const input = {
      _id: new ObjectId('ffffffffffffffffffffffff'),
      username: 'foo',
      item: {
        _id: new ObjectId('000000000000000000000000'),
        name: 'icecream',
      },
    };

    // when
    type Output = EncodeId<Input>;
    const result = encodeDocument<Output>(input);

    // expect
    expect(result).toStrictEqual({
      Id: '2KoAnowbOPcAbv5baxg2',
      username: 'foo',
      item: {
        Id: '8B2aGOaeb9iElQnGQr9e',
        name: 'icecream',
      },
    });

    expect(result.Id).toBe('2KoAnowbOPcAbv5baxg2'); // type conversion check
    expect(result.item.Id).toBe('8B2aGOaeb9iElQnGQr9e'); // type conversion check
  });
});
import { Entity } from '../../shared/entity.model';
import { RepositoryConvertible } from '../../repository/repository-convertible';
import { Comparable } from '../../shared/comparable';
import { SQLTableMetadata } from '../../sql/sql.table-metadata.model';

export class Lang extends Entity implements RepositoryConvertible, Comparable<Lang> {

  public static readonly METADATA = new SQLTableMetadata('langs', [
    'id INTEGER PRIMARY KEY',
    'key TEXT',
    'name TEXT',
    'technical INTEGER DEFAULT 0',
    'CONSTRAINT lang_key_unique UNIQUE (key)'
  ], [
    'key',
    'name',
    'technical'
  ]);

  public key: string;
  public name: string;
  public technical: boolean;

  convertFromRepository(raw: any): Lang {
    let result = new L


    name: "Isle of Man",
    nameTranslations: {
      "sk": "Ostrov Man",
      "se": "Mann-sullot",
      "pl": "Wyspa Man",
      "no": "Man",
      "ja": "マン島",
      "it": "Isola di Man",
      "zh": "马恩岛",
      "nl": "Isle of Man",
      "de": "Isle of Man",
      "fr": "Île de Man",
      "es": "Isla de Man",
      "en": "Isle of Man",
      "pt_BR": "Ilha de Man",
      "sr-Cyrl": "Острво Мен",
      "sr-Latn": "Ostrvo Men",
      "zh_TW": "曼島",
      "tr": "Man Adası",
      "ro": "Insula Man",
      "ar": "جزيرة مان",
      "fa": "جزیره مان",
      "yue": "马伊岛"
    },
    flag: "🇮🇲",
    code: "IM",
    dialCode: "44",
    minLength: 6,
    maxLength: 6,
  ),
  Country(
    name: "Israel",
    nameTranslations: {
      "sk": "Izrael",
      "se": "Israel",
      "pl": "Izrael",
      "no": "Israel",
      "ja": "イスラエル",
      "it": "Israele",
      "zh": "以色列",
      "nl": "Israël",
      "de": "Israel",
      "fr": "Israël",
      "es": "Israel",
      "en": "Israel",
      "pt_BR": "Israel",
      "sr-Cyrl": "Израел",
      "sr-Latn": "Izrael",
      "zh_TW": "以色列",
      "tr": "İsrail",
      "ro": "Israel",
      "ar": "إسرائيل",
      "fa": "إسرائيل",
      "yue": "以色列"
    },
    flag: "🇮🇱",
    code: "IL",
    dialCode: "972",
    minLength: 9,
    maxLength: 9,
  ),
  Country(
    name: "Campione d'Italia",
    nameTranslations: {
      "sk": "Taliansko",
      "se": "Itália",
      "pl": "Włochy",
      "no": "Italia",
      "ja": "イタリア",
      "it": "Italia",
      "zh": "意大利",
      "nl": "Italië",
      "de": "Italien",
      "fr": "Italie",
      "es": "Italia",
      "en": "Italy",
      "pt_BR": "Itália",
      "sr-Cyrl": "Италија",
      "sr-Latn": "Italija",
      "zh_TW": "義大利",
      "tr": "İtalya",
      "ro": "Italia",
      "ar": "إيطاليا",
      "fa": "ایتالیا",
      "yue": "意大利"
    },
    flag: "🇮🇹",
    code: "IT",
    dialCode: "39",
    minLength: 9,
    maxLength: 10,
  ),
  Country(
    name: "Jamaica",
    nameTranslations: {
      "sk": "Jamajka",
      "se": "Jamaica",
      "pl": "Jamajka",
      "no": "Jamaica",
      "ja": "ジャマイカ",
      "it": "Giamaica",


mbStyle
        const string BreadcrumbstyleName = "breadcrumb";
        QuickStyleDef _breadcrumbStyleDef;
        /// <summary>
        ///     Get the breadcrumb (path) style definition.
        /// </summary>
        public QuickStyleDef BreadcrumbStyleDef {
            get {
                if (_breadcrumbStyleDef == null) {
                    _breadcrumbStyleDef = new QuickStyleDef(Page,
                                                            BreadcrumbstyleName,
                                                            Items.Count,
                                                            new Font("Segoe UI Symbol",
                                                                    10,
                                                                    FontStyle.Bold,
                                                                    GraphicsUnit.Point),
                                                            Color.FromArgb(0x000000));
                    Add(_breadcrumbStyleDef);
                }
                return _breadcrumbStyleDef;
            }
        }
        #endregion Citationstyle
        /// <summary>
        /// Initialize an instance of this collection for elements with a
        /// specified XML name found on a OneNote page XML document .
        /// </summary>
        /// <param name="page">The OneNote page Xml document.</param>
        public QuickStyleDefCollection(OneNotePage page) : base (page.GetName(nameof(QuickStyleDef)),page,PageSchemaPosition.QuickStyleDef) {
        }

        /// <summary>
        /// Create a new style definition for an XML style definition found
        /// on a OneNote page document.
        /// </summary>
        /// <param name="styledef">A `one:QuickStyleDef` XML element.</param>
        /// <returns></returns>
        protected override QuickStyleDef CreateElementProxy(XElement styledef) {
            var def = new QuickStyleDef(Page, styledef);
            switch (def.Name) {
                case TagstyleName:
                    _tagStyle = def;
                    break;
                case LabelstyleName:
                    _labelStyleDef = def;
                    break;
                case BreadcrumbstyleName:
                    _breadcrumbStyleDef = def;
                    break;
            }
            return def;
        }
    }
}


from __future__ import annotations

from typing import Any

import gdsfactory as gf
from gdsfactory.component import Component
from gdsfactory.port import select_ports_electrical
from gdsfactory.routing.route_bundle import route_bundle_electrical
from gdsfactory.routing.sort_ports import sort_ports_x
from gdsfactory.typings import (
    ComponentSpec,
    CrossSectionSpec,
    Float2,
    SelectPorts,
    Strs,
)

def add_electrical_pads_top_dc(
    component: ComponentSpec,
    spacing: Float2 = (0.0, 100.0),
    pad_array: ComponentSpec = "pad_array270",
    select_ports: SelectPorts = select_ports_electrical,
    port_names: Strs | None = None,
    cross_section: CrossSectionSpec = "metal_routing",
    **kwargs: Any,
) -> Component:
    """Returns new component with electrical ports connected to top pad array.

    Args:
        component: component spec to connect to.
        spacing: component to pad spacing.
        pad_array: component factor for pad_array
        select_ports: function to select_ports.
        route_bundle_function: function to route bundle of ports.
        port_names: optional port names. Overrides select_ports.
        cross_section: cross_section for the route.
        kwargs: route settings.

    .. plot::
        :include-source:

        import gdsfactory as gf
        c = gf.components.wire_straight(length=200.)
        c = gf.routing.add_electrical_pads_top_dc(c, width=10)
        c.plot()

    """
    c = Component()
    component = gf.get_component(component)

    cref = c << component
    ports = (
        [cref[port_name] for port_name in port_names]
        if port_names
        else select_ports(cref.ports)
    )

    if not ports:
        raise ValueError(
            f"select_ports or port_names did not match any ports in "
            f"{[port.name for port in component.ports]}"
        )

    ports_component = [port.copy() for port in ports]

    for port in ports_component:
        port.orientation = 90

    pad_array_component = gf.get_component(pad_array, columns=len(ports))
    pads = c << pad_array_component
    pads.x = cref.x + spacing[0]
    pads.ymin = cref.ymax + spacing[1]

    ports_pads = pads.ports.filter(orientation=270)
    ports_component = sort_ports_x(ports_component)
    ports_pads = sort_ports_x(ports_pads)

    route_bundle_electrical(
        c, ports_component, ports_pads, cross_section=cross_section, **kwargs
    )

    for port in cref.ports:
        if port not in ports_component:
            c.add_port(name=port.name, port=port)

    for i, port_pad in enumerate(ports_pads):
        c.add_port(port=port_pad, name=f"elec-{component.name}-{i}")
    c.copy_child_info(component)
    return c


 Constructors,
  TypeKey extends ObjKey = "type",
  Prefix extends string = '',
> = {
  [K in keyof T]: {
    <R extends ReturnType<T[K]>>(
      ...args: Parameters<T[K]>
    ): WithType<R, K extends string ? `${Prefix}${K}` : Extract<K, symbol>, TypeKey>;
  } & ConstructorExtras<K extends string ? `${Prefix}${K}` : Extract<K, symbol>, TypeKey>
};

export type Handlers<
  T extends DiscUnionType<TypeKey>,
  R,
  TypeKey extends ObjKey = "type"
> = {
  [K in T[TypeKey]]: (s: Narrow<T, K, TypeKey>) => R;
};

export type ConstructorExtras<
  K extends ObjKey,
  TypeKey extends ObjKey = 'type',
> = {
  key: K,
  is: <T extends DiscUnionType<TypeKey>>(obj: T) =>  obj is Narrow<T, K, TypeKey>;
  map: <T extends DiscUnionType<TypeKey>, R>(obj: T, mapper: (val: Narrow<T, K , TypeKey>) => R) => R | T;
  validate: <T extends DiscUnionType<TypeKey>>(obj: T) => Narrow<T, K, TypeKey>;
  get: {
    <T extends DiscUnionType<TypeKey>>(obj: Narrow<T, K, TypeKey>): Narrow<T, K, TypeKey>;
    <T extends DiscUnionType<TypeKey>>(obj: T): Narrow<T, K, TypeKey> | null;
  },
}
import { isDefined } from '../../src/functions/is-defined';

test('is defined should return correct result',
    () =>
    {
        const nul = null;
        const und = void(0);
        const str = '';
        const num = 0;
        const obj = {};
        const nulResult = isDefined(nul);
        const undResult = isDefined(und);
        const strResult = isDefined(str);
        const numResult = isDefined(num);
        const objResult = isDefined(obj);
        expect(nulResult).toBe(false);
        expect(undResult).toBe(false);
        expect(strResult).toBe(true);
        expect(numResult).toBe(true);
        expect(objResult).toBe(true);
    }
);
import {createDataTypeAugmentation} from "../../../parser/dataTypes/createDataTypeAugmentation";
import {number} from "../number/number";
import {IValueFormat} from "./_types/IValueFormat";

/** An augmentation of storying the output format with a value */
export const formatAugmentation = createDataTypeAugmentation({
    name: "format",
    dataType: [number],
    init: (): undefined | IValueFormat => undefined,
    merge: formats => {
        let best = {count: 0, format: undefined as undefined | IValueFormat};
        const all: Record<any, number> = {};
        formats.forEach(({augmentation: f}) => {
            if (!f) return;

            const prev = all[f.identifier as any];
            const value = (all[f.identifier as any] = prev ? prev + 1 : 1);
            if (value > best.count) best = {count: value, format: f};
        });

        return {augmentation: best.format};
    },
});
import { Component, OnInit } from '@angular/core';

enum Status  {
    ordered,
    disordered,
    active
}

@Component({
  selector: 'app-sort',
  templateUrl: './sort.component.html',
  styleUrls: ['./sort.component.scss']
})

export class SortComponent implements OnInit {

    lengthArray = 100;
    maxValueArray = 600;
    array = [];
    sorting = false;
    isSorted = false;

    ngOnInit() {
        this.fillArray();
    }

    fillArray() {
        this.array = [];
        for (let i = 0; i < thi


ndler &handler,
            ACE_HANDLE handle,
            const void *completion_key,
            ACE_Proactor *proactor);

  /**
   * This cancels all pending accepts operations that were issued by
   * the calling thread.  The function does not cancel asynchronous
   * operations issued by other threads.
   */
  int cancel (void);

  /// Return the underlying proactor.
  ACE_Proactor* proactor (void) const;

protected:
  /// Do-nothing constructor.
  ACE_WIN32_Asynch_Write_Dgram (void);
};

#endif /* ACE_WIN32 && !ACE_HAS_WINCE */
#include "ace/post.h"
#endif /* ACE_WIN32_ASYNCH_IO_H */


Menu item colors
$menu-item:              #435966;
$menu-item-hover:        #71b6f9;
$menu-item-active:       #71b6f9;
$menu-sub-item-active:   #71b6f9;

//Rightbar Width
$rightbar-width:           260px;

//Topbar Background
$bg-topbar-light:         #363f4c;
$bg-topbar-dark:          #282e38;
$bg-topbar-gradient:      linear-gradient(135deg,#6658dd 0,#764ba2 100%);

// Topbar Height
$topbar-height: 70px;

// Secondary font
$font-family-secondary: 'Karla', sans-serif;

// Font weight
$font-weight-medium: 500;
$font-weight-semibold: 600;

// Dropdown Large
$dropdown-lg-width:    320px;

//
// Color system
//

// stylelint-disable

$gray-100: #323a46;
$gray-200: #343a40;
$gray-300: #6c757d;
$gray-400: #98a6ad;
$gray-500: #adb5bd;
$gray-600: #adb5bd;
$gray-700: #dee2e6;
$gray-800: #f7f7f7;
$gray-900: #f1f5f7;

$grays: ();
$grays: map-merge((
  "100": $gray-100,
  "200": $gray-200,
  "300": $gray-300,
  "400": $gray-400,
  "500": $gray-500,
  "600": $gray-600,
  "700": $gray-700,
  "800": $gray-800,
  "900": $gray-900
), $grays);

$blue:       #21AFDD;
$indigo:     #675aa9;
$purple:     #5b69bc;
$pink:       #ff8acc;
$red:        #ff5b5b;
$orange:     #fd7e14;
$yellow:     #f9c851;
$green:      #10c469;
$teal:       #02a8b5;
$cyan:       #35b8e0;

$colors: ();
$colors: map-merge((
  "blue":       $blue,
  "indigo":     $indigo,
  "purple":     $purple,
  "pink":       $pink,
  "red":        $red,
  "orange":     $orange,
  "yellow":     $yellow,
  "green":      $green,
  "teal":       $teal,
  "cyan":       $cyan,
  "white":      $white,
  "gray":       $gray-600,
  "gray-dark":  $gray-800
), $colors);

$primary:       $blue;
$secondary:     $gray-300;
$success:       $green;
$info:          $cyan;
$warning:       $yellow;
$danger:        $red;
$blue:          $blue;
$light:         $gray-100;
$dark:          $gray-900;

$theme-colors: ();
$theme-colors: map-merge((
  "primary":    $primary,
  "secondary":  $secondary,
  "success":    $success,
  "info":       $info,
  "warning":    $warning,
  "danger":     $danger,
  "light":      $light,
  "dark":       $dark,
  "pink":       $pink,
  "purple":     $purple,
  "blue":       $blue
), $theme-colors);

// The yiq lightness value that determines when the lightness of color changes from "dark" to "light". Acceptable values are between 0 and 255.
$yiq-contrasted-threshold:  180;

// Customize the light and dark text colors for use in our YIQ color contrast function.
$yiq-text-dark:             $gray-800;
$yiq-text-light:            $white;

// Options
//
// Quickly modify global styling by enabling or disabling optional features.

$enable-caret:              false;

// Spaci


r a specific route, using per filter config.
		Config: config,
	}

	if err := oAuth2.ValidateAll(); err != nil {
		return nil, fmt.Errorf("auth.NewFilterHTTPOAuth2: failed to validate oAuth2=%+#v, %w", oAuth2, err)
	}

	anyOAuth2, err := anypb.New(oAuth2)
	if err != nil {
		return nil, fmt.Errorf("auth.NewFilterHTTPOAuth2: cannot marshal filter oAuth2=%+#v, %w", oAuth2, err)
	}

	return anyOAuth2, err
}

func GenerateHMAC() (string, error) {
	// Since HMAC use symmetric key algorithm, we can just generate random bytes as secret key.

	// Securely generate an HMAC of at least 32 bytes:
	// "$ head -c 32 /dev/urandom | base64"
	// As of yet, the Envoy's implementation uses a 32 bytes digest
	// (SHA-256) which makes 32 bytes for the secret a good choice.

	// Example HMAC
	// ```sh
	// $ head -c 32 /dev/urandom | base64
	// 7njsC6u31gWhLlGemUEr4YoPxa2i832PMPvlwABmD8Y=
	// ```

	// Random 32 bytes long string
	src := make([]byte, 32)
	_, err := rand.Read(src)
	if err != nil {
		return "", fmt.Errorf("auth.GenerateHMAC: failed on rand.Read(src), err=%w", err)
	}

	// Encode as base64 string
	hmac := base64.StdEncoding.EncodeToString(src)

	return hmac, nil
}
package kusk

import (
	"context"
	"errors"
	"fmt"

	"gopkg.in/yaml.v3"
	corev1 "k8s.io/api/core/v1"
	v1 "k8s.io/api/core/v1"
	apierrors "k8s.io/apimachinery/pkg/api/errors"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/apimachinery/pkg/labels"
	"k8s.io/apimachinery/pkg/selection"
	_ "k8s.io/client-go/plugin/pkg/client/auth"
	"k8s.io/client-go/util/retry"
	"sigs.k8s.io/controller-runtime/pkg/client"

	kuskv1 "github.com/kubeshop/kusk-gateway/api/v1alpha1"
)

var ErrNotFound = errors.New("error not found")

type Client interface {
	GetEnvoyFleets() (*kuskv1.EnvoyFleetList, error)
	GetEnvoyFleet(namespace, name string) (*kuskv1.EnvoyFleet, error)
	CreateFleet(kuskv1.EnvoyFleet) (*kuskv1.EnvoyFleet, error)
	DeleteFleet(kuskv1.EnvoyFleet) error

	GetApis(namespace string) (*kuskv1.APIList, error)
	GetApi(namespace, name string) (*kuskv1.API, error)
	GetApiByEnvoyFleet(namespace, fleetNamespace, fleetName string) (*kuskv1.APIList, error)
	CreateApi(namespace, name, openapispec, fleetName, fleetnamespace string) (*kuskv1.API, error)
	UpdateApi(namespace, name, openapispec, fleetName, fleetnamespace string) (*kuskv1.API, error)
	DeleteAPI(namespace, name string) error

	GetStaticRoute(namespace, name string) (*kuskv1.StaticRoute, error)
	GetStaticRoutes(namespace string) (*kuskv1.StaticRouteList, error)
	CreateStaticRoute(namespace, name, fleetName, fleetNamespace, specs string) (*kuskv1.StaticRoute, error)
	UpdateStaticRoute(namespace, name, fleetName, fleetNamespace, specs string) (*kuskv1.StaticRoute, error)
	DeleteStaticRoute(kuskv1.StaticRoute) error

	GetSvc(namespace, name string) (*corev1.Service, error)
	ListServices(namespace string) (*corev1.ServiceList, error)
	ListNamespaces() (*corev1.NamespaceList, error)
	GetSecret(name, namespace string) (*v1.Secret, error)

	K8sClient() client.Client
}


tmp1.mul_assign(&r);

        a.mul_assign(&r);
        b.mul_assign(&r);
        c.mul_assign(&r);

        a.add_assign(&b);
        a.add_assign(&c);

        assert_eq!(tmp1, a);
    }
}

#[test]
fn test_fq_squaring() {
    let mut rng = XorShiftRng::seed_from_u64(1231275789u64);

    for _ in 0..1000000 {
        // Ensure that (a * a) = a^2
        let a = Fq::rand(&mut rng);

        let mut tmp = a;
        tmp.square_in_place();

        let mut tmp2 = a;
        tmp2.mul_assign(&a);

        assert_eq!(tmp, tmp2);
    }
}

#[test]
fn test_fq_inverse() {
    assert!(Fq::zero().inverse().is_none());

    let mut rng = XorShiftRng::seed_from_u64(1231275789u64);

    let one = Fq::one();

    for _ in 0..1000 {
        // Ensure that a * a^-1 = 1
        let mut a = Fq::rand(&mut rng);
        let ainv = a.inverse().unwrap();
        a.mul_assign(&ainv);
        assert_eq!(a, one);
    }
}

#[test]
fn test_fq_double_in_place() {
    let mut rng = XorShiftRng::seed_from_u64(1231275789u64);

    for _ in 0..1000 {
        // Ensure doubling a is equivalent to adding a to itself.
        let mut a = Fq::rand(&mut rng);
        let mut b = a;
        b.add_assign(&a);
        a.double_in_place();
        assert_eq!(a, b);
    }
}

#[test]
fn test_fq_negate() {
    {
        let a = -Fq::zero();

        assert!(a.is_zero());
    }

    let mut rng = XorShiftRng::seed_from_u64(1231275789u64);

    for _ in 0..1000 {
        // Ensure (a - (-a)) = 0.
        let mut a = Fq::rand(&mut rng);
        let b = -a;
        a.add_assign(&b);

        assert!(a.is_zero());
    }
}

#[test]
fn test_fq_pow() {
    let mut rng = XorShiftRng::seed_from_u64(1231275789u64);

    for i in 0..1000 {
        // Exponentiate by various small numbers and ensure it consists with repeated
        // multiplication.
        let a = Fq::rand(&mut rng);
        let target = a.pow(&[i]);
        let mut c = Fq::one();
        for _ in 0..i {
            c.mul_assign(&a);
        }
        assert_eq!(c, target);
    }

    for _ in 0..1000 {
        // Exponentiating by the modulus should have no effect in a prime field.
        let a = Fq::rand(&mut rng);

        assert_eq!(a, a.pow(Fq::characteristic()));
    }
}

#[test]
fn test_fq_sqrt() {
    let mut rng = XorShiftRng::seed_from_u64(1231275789u64);

    assert_eq!(Fq::zero().sqrt().unwrap(), Fq::zero());

    for _ in 0..1000 {
        // Ensure sqrt(a^2) = a or -a
        let a = Fq::rand(&mut rng);
        let nega = -a;
        let mut b = a;
        b.square_in_place();

        let b = b.sqrt().u


OWED_SECURE_PROTOCOLS: WS_SECURITY_BINDING_PROPERTY_ID = 22i32;
#[doc = "*Required features: `\"Win32_Networking_WindowsWebServices\"`*"]
pub const WS_SECURITY_BINDING_PROPERTY_CERTIFICATE_VALIDATION_CALLBACK_CONTEXT: WS_SECURITY_BINDING_PROPERTY_ID = 23i32;
#[doc = "*Required features: `\"Win32_Networking_WindowsWebServices\"`*"]
pub type WS_SECURITY_BINDING_TYPE = i32;
#[doc = "*Required features: `\"Win32_Networking_WindowsWebServices\"`*"]
pub const WS_SSL_TRANSPORT_SECURITY_BINDING_TYPE: WS_SECURITY_BINDING_TYPE = 1i32;
#[doc = "*Required features: `\"Win32_Networking_WindowsWebServices\"`*"]
pub const WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_TYPE: WS_SECURITY_BINDING_TYPE = 2i32;
#[doc = "*Required features: `\"Win32_Networking_WindowsWebServices\"`*"]
pub const WS_HTTP_HEADER_AUTH_SECURITY_BINDING_TYPE: WS_SECURITY_BINDING_TYPE = 3i32;
#[doc = "*Required features: `\"Win32_Networking_WindowsWebServices\"`*"]
pub const WS_USERNAME_MESSAGE_SECURITY_BINDING_TYPE: WS_SECURITY_BINDING_TYPE = 4i32;
#[doc = "*Required features: `\"Win32_Networking_WindowsWebServices\"`*"]
pub const WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_TYPE: WS_SECURITY_BINDING_TYPE = 5i32;
#[doc = "*Required features: `\"Win32_Networking_WindowsWebServices\"`*"]
pub const WS_XML_TOKEN_MESSAGE_SECURITY_BINDING_TYPE: WS_SECURITY_BINDING_TYPE = 6i32;
#[doc = "*Required features: `\"Win32_Networking_WindowsWebServices\"`*"]
pub const WS_SAML_MESSAGE_SECURITY_BINDING_TYPE: WS_SECURITY_BINDING_TYPE = 7i32;
#[doc = "*Required features: `\"Win32_Networking_WindowsWebServices\"`*"]
pub const WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_TYPE: WS_SECURITY_BINDING_TYPE = 8i32;
#[doc = "*Required features: `\"Win32_Networking_WindowsWebServices\"`*"]
pub const WS_NAMEDPIPE_SSPI_TRANSPORT_SECURITY_BINDING_TYPE: WS_SECURITY_BINDING_TYPE = 9i32;
#[repr(C)]
#[doc = "*Required features: `\"Win32_Networking_WindowsWebServices\"`*"]
pub struct WS_SECURITY_CONSTRAINTS {
    pub securityPropertyConstraints: *mut WS_SECURITY_PROPERTY_CONSTRAINT,
    pub securityPropertyConstraintCount: u32,
    pub securityBindingConstraints: *mut *mut WS_SECURITY_BINDING_CONSTRAINT,
    pub securityBindingConstraintCount: u32,
}
impl ::core::marker::Copy for WS_SECURITY_CONSTRAINTS {}
impl ::core::clone::Clone for WS_SECURITY_CONSTRAINTS {
    fn clone(&self) -> Self {
        *self
    }
}
#[repr(C)]
pub struct WS_SECURITY_CONTEXT(pub u8);
#[repr(C)]
#[doc = "*Required features: `\"Win32_Networking_WindowsWebServices\"`*"]
pub struct WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING {
    pub binding: WS_SECURITY_BINDING,
    pub bindingUsage: WS_MESSAGE_SECURITY_USAGE,
    pub bootstrapSecurityDescription: *mut WS_SECURITY_DES


if (error != OT_ERROR_NONE)
    {
        IgnoreError(PrepareLastStatusResponse(header, ThreadErrorToSpinelStatus(error)));
    }

    if (!IsResponseQueueEmpty())
    {
        // A response may have been prepared and queued for this command,
        // so we attempt to send/write any queued responses. Note that
        // if the response was prepared but cannot be sent now (not
        // enough buffer space available), it will be attempted again
        // from `HandleFrameRemovedFromNcpBuffer()` when buffer space
        // becomes available.

        IgnoreError(SendQueuedResponses());
    }

    // Check for out of sequence TIDs and update `mNextExpectedTid`,

    tid = SPINEL_HEADER_GET_TID(header);

    if ((mNextExpectedTid[mCurCommandIid] != 0) && (tid != mNextExpectedTid[mCurCommandIid]))
    {
        mRxSpinelOutOfOrderTidCounter++;
    }

    mNextExpectedTid[mCurCommandIid] = SPINEL_GET_NEXT_TID(tid);

exit:
    mDisableStreamWrite = false;
}

void NcpBase::HandleFrameRemovedFromNcpBuffer(void                    *aContext,
                                              Spinel::Buffer::FrameTag aFrameTag,
                                              Spinel::Buffer::Priority aPriority,
                                              Spinel::Buffer          *aNcpBuffer)
{
    OT_UNUSED_VARIABLE(aNcpBuffer);
    OT_UNUSED_VARIABLE(aPriority);

    static_cast<NcpBase *>(aContext)->HandleFrameRemovedFromNcpBuffer(aFrameTag);
}

void NcpBase::HandleFrameRemovedFromNcpBuffer(Spinel::Buffer::FrameTag aFrameTag)
{
    if (mHostPowerStateInProgress)
    {
        if (aFrameTag == mHostPowerReplyFrameTag)
        {
            mHostPowerStateInProgress = false;
        }
    }

    // A frame was removed from NCP TX buffer, so more space is now available.
    // We attempt to write/send any pending frames. Order of the checks
    // below is important: First any queued command responses, then
    // any queued IPv6 datagram messages, then any asynchronous property updates.
    // If a frame still can not fit in the available buffer, we exit immediately
    // and wait for next time this callback is invoked (when another frame is
    // removed and more buffer space becomes available).

    SuccessOrExit(SendQueuedResponses());

#if OPENTHREAD_ENABLE_NCP_VENDOR_HOOK
    VendorHandleFrameRemovedFromNcpBuffer(aFrameTag);
#endif

    // Check if `HOST_POWER_STATE` property update is required.

    if (mHostPowerStateHeader)
    {
        SuccessOrExit(WritePropertyValueIsFrame(mHostPowerStateHeader, SPINEL_PROP_HOST_POWER_STATE));

        mHostPowerStateHeader = 0;

        if (mHostPowerState != SPINEL_HOST_POWER_STATE_ONLINE)
        {
            mHostPowerReplyFrameTag   = GetLastOutboundFrameTag();
            mHostPowerStateInProgress = true;
        }
    }

#if OPENTHREAD_MTD || OPENTHREAD_FTD

    // Send any queued IPv6 datagram message.

    SuccessOrExit(SendQueuedDatagramMessages());
#endif

    // Send any unsolicited event-triggered property updates.

    UpdateChangedProps();

exit:
    return;
}

bool NcpBase::ShouldWakeHost(void)
{
    return (mHostPowerState != SPINEL_HOST_POWER_STATE_ONLINE && !mHostPowerStateInProgress);
}

bool NcpBase::ShouldDeferHostSend(void)
{
    return (m


rride val mnem = "sub"

    override val cyChg = true
    override val ovChg = true
    override val sChg = true
    override val zChg = true

    private val result = v850esVariable(Datatype.DWORD)

    // Format I - reg1, reg2
    override fun execute() {
        val a2 = op2.value(core)
        val a1 = op1.value(core)
        val tmp = a2 - a1
        result.value(core, tmp)
        FlagProcessor.processArithmFlag(core, result, op1, op2, true)
        op2.value(core, result)
    }
}/*
 *
 * This file is part of Kopycat emulator software.
 *
 * Copyright (C) 2023 INFORION, LLC
 *
 * 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 2 of the License, or
 * (at your option) any later version.
 *
 * Non-free licenses may also be purchased from INFORION, LLC,
 * for users who do not want their programs protected by the GPL.
 * Contact us for details kopycat@inforion.ru
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without 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, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 *
 */
package ru.inforion.lab403.kopycat.cores.v850es.instructions.cpu.special

import ru.inforion.lab403.common.extensions.get
import ru.inforion.lab403.kopycat.cores.base.enums.Datatype
import ru.inforion.lab403.kopycat.cores.base.exceptions.GeneralException
import ru.inforion.lab403.kopycat.cores.base.operands.AOperand
import ru.inforion.lab403.kopycat.cores.base.operands.Immediate
import ru.inforion.lab403.kopycat.cores.v850es.instructions.AV850ESInstruction
import ru.inforion.lab403.kopycat.cores.v850es.operands.v850esMemory
import ru.inforion.lab403.kopycat.cores.v850es.operands.v850esRegister
import ru.inforion.lab403.kopycat.modules.cores.v850ESCore

class Prepare(core: v850ESCore, size: Int, vararg operands: AOperand<v850ESCore>):
        AV850ESInstruction(core, Type.VOID, size, *operands) {
    override val mnem = "prepare"

    // Format XIII - imm, list, reg
    override fun execute() {
        val listValue = op2.value(core)
        for (i in 0..11){
            if(listValue[i] != 0uL){
                val regId = when(i){
                    0 -> 30
                    1 -> 31
                    2 -> 29
                    3 -> 28
                    4 -> 23
                    5 -> 22
                    6 -> 21
                    7 -> 20
                    8 -> 27
                    9 -> 26
                    10 -> 25
                    11 -> 24
                    else -> throw GeneralException("Incorrect list index")
                }
                v850esMemory(Datatype.DWORD, core.cpu.regs.r3StackPointer - 4u).value(core, v850esRegister.gpr(regId).value(core))
                core.cpu.regs.r3StackPointer = core.cpu.regs.r3StackPointer - 4u
            }
        }
        core.cpu.regs.r3StackPointer = core.cpu.regs.r3StackPointer - (op1.value(core) shl 2)

        if(opcount == 3 && (op3 is v850esRegister


ookie: foundation::EventRegistrationToken) -> Result<()> {
        <Self as RtActivatable<ISpatialStageFrameOfReferenceStatics>>::get_activation_factory().remove_current_changed(cookie)
    }
    #[inline] pub fn request_new_stage_async() -> Result<foundation::IAsyncOperation<SpatialStageFrameOfReference>> {
        <Self as RtActivatable<ISpatialStageFrameOfReferenceStatics>>::get_activation_factory().request_new_stage_async()
    }
}
DEFINE_CLSID!(SpatialStageFrameOfReference(&[87,105,110,100,111,119,115,46,80,101,114,99,101,112,116,105,111,110,46,83,112,97,116,105,97,108,46,83,112,97,116,105,97,108,83,116,97,103,101,70,114,97,109,101,79,102,82,101,102,101,114,101,110,99,101,0]) [CLSID_SpatialStageFrameOfReference]);
DEFINE_IID!(IID_ISpatialStageFrameOfReferenceStatics, 4153236557, 41124, 18844, 141, 145, 168, 201, 101, 212, 6, 84);
RT_INTERFACE!{static interface ISpatialStageFrameOfReferenceStatics(ISpatialStageFrameOfReferenceStaticsVtbl): IInspectable [IID_ISpatialStageFrameOfReferenceStatics] {
    fn get_Current(&self, out: *mut <SpatialStageFrameOfReference as RtType>::Abi) -> HRESULT,
    fn add_CurrentChanged(&self, handler: <foundation::EventHandler<IInspectable> as RtType>::Abi, out: *mut foundation::EventRegistrationToken) -> HRESULT,
    fn remove_CurrentChanged(&self, cookie: foundation::EventRegistrationToken) -> HRESULT,
    fn RequestNewStageAsync(&self, out: *mut <foundation::IAsyncOperation<SpatialStageFrameOfReference> as RtType>::Abi) -> HRESULT
}}
impl ISpatialStageFrameOfReferenceStatics {
    #[inline] pub fn get_current(&self) -> Result<Option<SpatialStageFrameOfReference>> { unsafe {
        let mut out = null_mut();
        let hr = (self.get_vtbl().get_Current)(self.get_abi() as *const _ as *mut _, &mut out);
        if hr == S_OK { Ok(SpatialStageFrameOfReference::wrap(out)) } else { err(hr) }
    }}
    #[inline] pub fn add_current_changed(&self, handler: &foundation::EventHandler<IInspectable>) -> Result<foundation::EventRegistrationToken> { unsafe {
        let mut out = zeroed();
        let hr = (self.get_vtbl().add_CurrentChanged)(self.get_abi() as *const _ as *mut _, handler.get_abi() as *const _ as *mut _, &mut out);
        if hr == S_OK { Ok(out) } else { err(hr) }
    }}
    #[inline] pub fn remove_current_changed(&self, cookie: foundation::EventRegistrationToken) -> Result<()> { unsafe {
        let hr = (self.get_vtbl().remove_CurrentChanged)(self.get_abi() as *const _ as *mut _, cookie);
        if hr == S_OK { Ok(()) } else { err(hr) }
    }}
    #[inline] pub fn request_new_stage_async(&self) -> Result<foundation::IAsyncOperation<SpatialStageFrameOfReference>> { unsafe {
        let mut out = null_mut();
        let hr = (self.get_vtbl().RequestNewStageAsync)(self.get_abi() as *const _ as *mut _, &mut out);
        if hr == S_OK { Ok(foundation::IAsyncOperation::wrap_nonnull(out)) } else { err(hr) }
    }}
}
DEFINE_IID!(IID_ISpatialStationaryFrameOfReference, 165399737, 48376, 15999, 190, 126, 126, 220, 203, 177, 120, 168);
RT_INTERFACE!{interface


local internalNpcName = "One-Eyed Joe"
local npcType = Game.createNpcType(internalNpcName)
local npcConfig = {}

npcConfig.name = internalNpcName
npcConfig.description = internalNpcName

npcConfig.health = 100
npcConfig.maxHealth = npcConfig.health
npcConfig.walkInterval = 2000
npcConfig.walkRadius = 2

npcConfig.outfit = {
	lookType = 155,
	lookHead = 94,
	lookBody = 114,
	lookLegs = 105,
	lookFeet = 97,
	lookAddons = 1,
}

npcConfig.flags = {
	floorchange = false,
}

npcConfig.voices = {
	interval = 15000,
	chance = 50,
	{ text = "Did you hear that, too?" },
}

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)

npcType.onThink = function(npc, interval)
	npcHandler:onThink(npc, interval)
end

npcType.onAppear = function(npc, creature)
	npcHandler:onAppear(npc, creature)
end

npcType.onDisappear = function(npc, creature)
	npcHandler:onDisappear(npc, creature)
end

npcType.onMove = function(npc, creature, fromPosition, toPosition)
	npcHandler:onMove(npc, creature, fromPosition, toPosition)
end

npcType.onSay = function(npc, creature, type, message)
	npcHandler:onSay(npc, creature, type, message)
end

npcType.onCloseChannel = function(npc, creature)
	npcHandler:onCloseChannel(npc, creature)
end

local function greetCallback(npc, creature)
	local player = creature:getPlayer()
	if not player then
		return false
	end

	local playerId = player:getId()
	local currentTime = os.time()

	if player:getStorageValue(Storage.Quest.U10_70.TheCursedCrystal.Oneeyedjoe) == 3 and player:getStorageValue(Storage.Quest.U10_70.TheCursedCrystal.Questline) == 3 then
		player:addAchievement("Wail of the Banshee")
		player:addItem(16119, 1)
		player:addItem(16120, 1)
		player:addItem(16121, 1)

		local chanceToPirate = math.random(1, 4)
		local pirateItems = { [1] = 5926, [2] = 6098, [3] = 6097, [4] = 6126 }
		player:addItem(pirateItems[chanceToPirate], 1)

		player:setStorageValue(Storage.Quest.U10_70.TheCursedCrystal.Oneeyedjoe, 4)
		player:setStorageValue(Storage.Quest.U10_70.TheCursedCrystal.Questline, 4)
		player:setStorageValue(Storage.Quest.U10_70.TheCursedCrystal.Time, currentTime + 20 * 60 * 60)
		npcHandler:setMessage(MESSAGE_GREET, "Well done! But know this: The cursed crystal seems to regenerate over time. It could be necessary to come back and repeat whatever you have done down there.")
	else
		npcHandler:setMessage(MESSAGE_GREET, "Hello there. I'm sorry, I hardly noticed you. I'm a bit nervous. The spooky {sounds} down there, you know")
	end

	return true
end

local function creatureSayCallback(npc, creature, type, message)
	local player = creature:getPlayer()
	if not player then
		return false
	end

	local playerId = player:getId()
	local currentTime = os.time()
	local questTime = player:getStorageValue(Storage.Quest.U10_70.TheCursedCrystal.Time)

	if questTime > 0 and currentTime >= questTime then
		player:setStorageValue(Storage.Quest.U10_70.TheCursedCrystal.Oneeyedjoe, -1)
		player:setS


/*****************************************************************************\
|   === carp.h : 2025 ===                                                     |
|                                                                             |
|    Command line argument parsing library header file             .pi0iq.    |
|                                                                 d"  . `'b   |
|    This file is part of profanOS and is released under          q. /|\  "   |
|    the terms of the GNU General Public License                   `// \\     |
|                                                                  //   \\    |
|   === elydre : https://github.com/elydre/profanOS ===         #######  \\   |
\*****************************************************************************/

#ifndef _PROFAN_CARP_H
#define _PROFAN_CARP_H

#include <profan/minimal.h>

_BEGIN_C_FILE

#define CARP_STANDARD 0
#define CARP_NEXT_STR 1
#define CARP_NEXT_INT 2
#define CARP_ANYNUMBR 3

#define CARP_FNOMAX 0x00ffffff
#define CARP_FMIN(min) ((min & 0xff) << 24)

int  carp_init(char *usage, unsigned file_limits);
void carp_set_ver(const char *name, const char *version);

int carp_register(char c, int flag, const char *desc);
int carp_conflict(const char *conflict);
int carp_parse(int argc, char **argv);

void carp_print_help(void);

int          carp_isset(char c);
const char  *carp_get_str(char c);
int          carp_get_int(char c);

const char **carp_get_files(void);
int          carp_file_count(void);
const char  *carp_file_next(void);

_END_C_FILE

#endif


he tile shader use offsets for horz and vert step?

BlobFont.filenamePrefix = 'font'
BlobFont.filenameSuffix = '.png'

function BlobFont:saveFile(filepath, blobIndex, blobs)
--DEBUG:print'saving font...'
	local saveImg = Image(256, 64, 1, uint8_t)
	for xl=0,31 do
		for yl=0,7 do
			local ch = bit.bor(xl, bit.lshift(yl, 5))
			for x=0,7 do
				for y=0,7 do
					saveImg.buffer[
						bit.bor(
							x,
							bit.lshift(xl, 3),
							bit.lshift(y, 8),
							bit.lshift(yl, 11)
						)
					] = bit.band(bit.rshift(self:getPtr()[
						bit.bor(
							x,
							bit.band(ch, bit.bnot(7)),
							bit.lshift(y, 8)
						)
					], bit.band(ch, 7)), 1)
				end
			end
		end
	end
	saveImg.palette = {{0,0,0},{255,255,255}}
	saveImg:save(filepath.path)
end

-- static method:
function BlobFont:loadFile(filepath, basepath, blobIndex)
	local blob = self.class()
	resetFont(blob:getPtr(), filepath.path)
	return blob
end

return BlobFont


     offsets[i] = off;
      }
      return numNonZeros (numRows, numCols, part);
   }

   /**
    * Dense implementation method for {@link
    * maspack.matrix.MatrixBlock#addNumNonZerosByRow(int[],int,Matrix.Partition)
    * addNumNonZerosByRow(int[],int,Partition)}.
    */
   public static void addNumNonZerosByRow (
      Matrix M, int[] offsets, int idx, Partition part) {
      boolean upperTriangular = MatrixBase.checkUpperTriangular (part);
      int numCols = M.colSize();
      for (int i = 0; i < M.rowSize(); i++) {
         offsets[idx + i] += numCols;
         if (upperTriangular) {
            numCols--;
         }
      }
   }

   /**
    * {@inheritDoc}
    */
   public void addNumNonZerosByRow (int[] offsets, int idx, Partition part) {
      addNumNonZerosByRow (this, offsets, idx, part);
   }

   /**
    * Dense implementation method for {@link
    * maspack.matrix.MatrixBlock#getBlockCCSIndices(int[],int,int[],Matrix.Partition)
    * getBlockCCSIndices(int[],int[],Partition)}.
    */
   public static int getBlockCCSIndices (
      MatrixBlock M, int[] rowIdxs, int rowOff, int[] offsets, Partition part) {
      boolean lowerTriangular = MatrixBase.checkLowerTriangular (part);
      int numRows = M.rowSize();
      int numCols = M.colSize();
      // int rowOff = M.getRowOffset();
      for (int j = 0; j < numCols; j++) {
         int off = offsets[j];
         for (int i = lowerTriangular ? j : 0; i < numRows; i++) {
            rowIdxs[off] = rowOff + i;
            off++;
         }
         offsets[j] = off;
      }
      return numNonZeros (numRows, numCols, part);
   }

   /**
    * {@inheritDoc}
    */
   public int getBlockCCSIndices (
      int[] rowIdxs, int rowOff, int[] offsets, Partition part) {
      return getBlockCCSIndices (this, rowIdxs, rowOff, offsets, part);
   }

   /**
    * {@inheritDoc}
    */
   public int getBlockCCSValues (double[] vals, int[] offsets, Partition part) {
      boolean lowerTriangular = MatrixBase.checkLowerTriangular (part);
      int numRows = rowSize();
      int numCols = colSize();
      for (int j = 0; j < numCols; j++) {
         int off = offsets[j];
         for (int i = lowerTriangular ? j : 0; i < numRows; i++) {
            vals[off++] = get (i, j);
         }
         offsets[j] = off;
      }
      return numNonZeros (numRows, numCols, part);
   }

   /**
    * Dense implementation method for {@link
    * maspack.matrix.MatrixBlock#addNumNonZerosByCol(int[],int,Matrix.Partition)
    * addNumNonZerosByColgetBlockCCSIndices(int[],int,Partition)}.
    */
   public static void addNumNonZerosByCol (
      Matrix M, int[] offsets, int idx, Partition part) {
      boolean lowerTriangular = MatrixBase.checkLowerTriangular (part);
      int numRows = M.rowSize();
      for (int j = 0; j < M.colSize(); j++) {
         offsets[idx + j] += numRows;
         if (lowerTriangular) {
            numRows--;
         }
      }
   }

   /**
    * {@inheritDoc}
    */
   public void addNumNonZerosByCol (int[] offsets, int idx, Partition part) {
      addNumNonZerosByCol (this


TestBase extends LuceneTestCase {
  protected Path tempDir1;

  private void buildTestIndex() throws IOException {
    try {
      Directory dir = FSDirectory.open(tempDir1);

      IndexWriterConfig config = new IndexWriterConfig();
      config.setOpenMode(IndexWriterConfig.OpenMode.CREATE);

      IndexWriter writer = new IndexWriter(dir, config);

      // Index Lake Ontario (a Polygon) using Polygon.fromGeoJSON
      Document doc1 = new Document();
      Path path1 = Paths.get("src/test/resources/sample_docs/geosearch/lake_ontario.geojson");
      byte[] encoded = Files.readAllBytes(path1);
      String s = new String(encoded);
      Polygon lakeOntario = Polygon.fromGeoJSON(s)[0];

      Field[] fields = LatLonShape.createIndexableFields("geometry", lakeOntario);
      for (Field f: fields) {
        doc1.add(f);
      }
      doc1.add(new StringField(Constants.ID, "id", Field.Store.YES));
      writer.addDocument(doc1);

      // Index Polygon with a hole in it using SimpleWKTShapeParser
      Document doc2 = new Document();
      Path path2 = Paths.get("src/test/resources/sample_docs/geosearch/self_containing_polygon.wkt");
      List<String> listLines2 = Files.readAllLines(path2);
      String[] lines2 = listLines2.toArray(new String[0]);
      Polygon polygonWithHole = (Polygon) SimpleWKTShapeParser.parse(lines2[0]);

      Field[] fields2 = LatLonShape.createIndexableFields("geometry", polygonWithHole);
      for (Field f: fields2) {
        doc2.add(f);
      }
      doc2.add(new StringField(Constants.ID, "id", Field.Store.YES));
      writer.addDocument(doc2);

      // Index MultiPolygon using SimpleWKTShapeParser
      Document doc3 = new Document();
      Path path3 = Paths.get("src/test/resources/sample_docs/geosearch/multipolygon.wkt");
      List<String> listLines3 = Files.readAllLines(path3);
      String[] lines3 = listLines3.toArray(new String[0]);
      Polygon[] multipolygon = (Polygon[]) SimpleWKTShapeParser.parse(lines3[0]);

      for (Polygon p: multipolygon) {
        Field[] fields3 = LatLonShape.createIndexableFields("geometry", p);
        for (Field f: fields3) {
          doc3.add(f);
        }
      }
      doc3.add(new StringField(Constants.ID, "id", Field.Store.YES));
      writer.addDocument(doc3);

      // Index LineString using SimpleWKTShapeParser
      Document doc4 = new Document();
      Path path4 = Paths.get("src/test/resources/sample_docs/geosearch/line.wkt");
      List<String> listLines4 = Files.readAllLines(path4);
      String[] lines4 = listLines4.toArray(new String[0]);
      Line lineShape = (Line) SimpleWKTShapeParser.parse(lines4[0]);

      Field[] fields4 = LatLonShape.createIndexableFields("geometry", lineShape);
      for (Field f: fields4) {
        doc4.add(f);
      }
      doc4.add(new StringField(Constants.ID, "id", Field.Store.YES));
      writer.addDocument(doc4);

      // Index MultiLineString using SimpleWKTShapeParser
      Document doc5 = new Document();
      Path path5 = Paths.get("src/test/resources/sample_docs/geosearch/multiline.wkt");
      List<String> listLines5 = Files.readAllLines(path5);
      String[] lines5 = listLines5.toArray(new String[0]);
      Line[] lineShapes = (


51,51) 80px 80px}
.azm-long-shadow.azm-pagelines {text-shadow:rgb(61,61,61) 1px 1px,rgb(61,61,61) 2px 2px,rgb(61,61,61) 3px 3px,rgb(61,61,61) 4px 4px,rgb(61,61,61) 5px 5px,rgb(61,61,61) 6px 6px,rgb(61,61,61) 7px 7px,rgb(61,61,61) 8px 8px,rgb(61,61,61) 9px 9px,rgb(61,61,61) 10px 10px,rgb(61,61,61) 11px 11px,rgb(62,62,62) 12px 12px,rgb(62,62,62) 13px 13px,rgb(62,62,62) 14px 14px,rgb(62,62,62) 15px 15px,rgb(62,62,62) 16px 16px,rgb(62,62,62) 17px 17px,rgb(62,62,62) 18px 18px,rgb(62,62,62) 19px 19px,rgb(62,62,62) 20px 20px,rgb(62,62,62) 21px 21px,rgb(62,62,62) 22px 22px,rgb(63,63,63) 23px 23px,rgb(63,63,63) 24px 24px,rgb(63,63,63) 25px 25px,rgb(63,63,63) 26px 26px,rgb(63,63,63) 27px 27px,rgb(63,63,63) 28px 28px,rgb(63,63,63) 29px 29px,rgb(63,63,63) 30px 30px,rgb(63,63,63) 31px 31px,rgb(63,63,63) 32px 32px,rgb(63,63,63) 33px 33px,rgb(63,63,63) 34px 34px,rgb(64,64,64) 35px 35px,rgb(64,64,64) 36px 36px,rgb(64,64,64) 37px 37px,rgb(64,64,64) 38px 38px,rgb(64,64,64) 39px 39px,rgb(64,64,64) 40px 40px,rgb(64,64,64) 41px 41px,rgb(64,64,64) 42px 42px,rgb(64,64,64) 43px 43px,rgb(64,64,64) 44px 44px,rgb(64,64,64) 45px 45px,rgb(65,65,65) 46px 46px,rgb(65,65,65) 47px 47px,rgb(65,65,65) 48px 48px,rgb(65,65,65) 49px 49px,rgb(65,65,65) 50px 50px,rgb(65,65,65) 51px 51px,rgb(65,65,65) 52px 52px,rgb(65,65,65) 53px 53px,rgb(65,65,65) 54px 54px,rgb(65,65,65) 55px 55px,rgb(65,65,65) 56px 56px,rgb(65,65,65) 57px 57px,rgb(66,66,66) 58px 58px,rgb(66,66,66) 59px 59px,rgb(66,66,66) 60px 60px,rgb(66,66,66) 61px 61px,rgb(66,66,66) 62px 62px,rgb(66,66,66) 63px 63px,rgb(66,66,66) 64px 64px,rgb(66,66,66) 65px 65px,rgb(66,66,66) 66px 66px,rgb(66,66,66) 67px 67px,rgb(66,66,66) 68px 68px,rgb(67,67,67) 69px 69px,rgb(67,67,67) 70px 70px,rgb(67,67,67) 71px 71px,rgb(67,67,67) 72px 72px,rgb(67,67,67) 73px 73px,rgb(67,67,67) 74px 74px,rgb(67,67,67) 75px 75px,rgb(67,67,67) 76px 76px,rgb


px;background-size:20px 20px;opacity:.7;filter:alpha(opacity=70);width:100%;height:500px;display:none}.no-float{float:none}.A1B1 .button,.A1B1 .spinner,.wp_attachment_image .button,.wp_attachment_image .spinner{float:right}.imgedit-settings .disabled,.media-disabled{color:grey}.A1B1,.wp_attachment_image{overflow:hidden}.no-js .wp_attachment_image .button{display:none}.imgedit-menu{margin:0 0 12px;min-width:300px}.imgedit-menu div{float:right;width:32px;border:1px solid #d5d5d5;background:#f1f1f1;margin:0 0 0 8px;height:32px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;line-height:28px;color:#777;cursor:pointer}.imgedit-menu div:before{font:400 20px/1 dashicons;speak:none;vertical-align:middle}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea;color:#32373c}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;color:#777;filter:alpha(opacity=50);opacity:.5;cursor:default}.imgedit-crop:before{content:"\f165"}.imgedit-rleft:before{content:"\f166"}.imgedit-rright:before{content:"\f167"}.imgedit-flipv:before{content:"\f168"}.imgedit-fliph:before{content:"\f169"}.imgedit-undo:before{content:"\f171"}.imgedit-redo:before{content:"\f172"}.imgedit-crop-wrap{position:relative}.imgedit-crop{margin:0 0 0 8px}.imgedit-rleft{margin:0 3px}.imgedit-rright{margin:0 3px 0 8px}.imgedit-flipv{margin:0 3px}.imgedit-fliph{margin:0 3px 0 8px}.imgedit-undo{margin:0 3px}.imgedit-redo{margin:0 3px 0 8px}.imgedit-applyto img{margin:0 0 0 8px}#poststuff .imgedit-group-top h2,#poststuff .imgedit-group-top h3{margin:0;padding:0;font-size:14px;line-height:1.4}.imgedit-applyto .imgedit-label{padding:2px 0 0;display:block}.imgedit-help{display:none;font-style:italic}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 0 0}.imgedit-submit-btn{margin-right:20px}.imgedit-wrap .nowrap{white-space:nowrap}span.imgedit-scale-warn{color:red;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle}.imgedit-group{margin-bottom:8px;padding:10px}audio,video{display:inline-block;max-width:100%}.mejs-container{width:100%;max-width:100%}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.imgedit-wait{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.wp_attachment_details label[for=content]{font-size:14px;line-height:1.5em}.media-upload-form .media-item .error,.media-upload-form .media-item.error{font-size:13px;line-height:1.5}.media-upload-form .media-item.error{padding:1px 10px}.media-upload-form .media-item .error{padding:10px 12px 10px 0}}@media only screen and (max-width:1120px){#wp-media-grid .wp-filter .attachment-filters{max-width:100%}}@media only screen and (max-width:782px){.media-frame.mode-select .attachments-browser.fixed .media


// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System;
using System.Collections;
using System.Runtime.InteropServices;
using Xunit;

public enum TestEnum
{
    red = 1,
    green = 2,
    blue = 4,
}

[StructLayout(LayoutKind.Sequential)]
public struct AA
{
    public object m_objField1;
    public static long Static1(Array param1, ushort[,] param2, ref int[,,][,,]
        param3, ulong[,] param4, float[][,,] param5)
    {
        long[,] local1 = (new long[100u, 30u]);
#pragma warning disable 1718
        while ((param1 != param1))
#pragma warning restore 1718
        {
            for (App.m_lFwd1 = ((long)(6.0)); App.m_bFwd2; App.m_ulFwd3 -= ((ulong)(8u)))
            {
                byte local2 = App.m_byFwd4;
                do
                {
                    long[,,,] local3 = (new long[4u, 68u, 35u, 15u]);
                    while (App.m_bFwd2)
                    {
#pragma warning disable 1717
                        param1 = (param1 = param1);
#pragma warning restore 1717
                        param3 = ((int[,,][,,])(param1));
                        do
                        {
                            ulong local4 = ((ulong)(108.0f));
                            String[][][,,,,] local5 = (new String[14u][][,,,,]);
#pragma warning disable 1718
                            for (App.m_sbyFwd5 *= App.m_sbyFwd5; (local4 != local4); App.m_fFwd6 = 28.0f
                                )
#pragma warning restore 1718
                            {
                                bool[][][,,,] local6 = new bool[][][,,,] { (new bool[53u][,,,]) };
                                char local7 = '\x6f';
                            }
                            param4[((int)(108.0f)), 27] /= local4;
                        }
                        while ((param1 == null));
                        try
                        {
                        }
                        catch (Exception)
                        {
                            bool local8 = true;
                            TypedReference local9 = __makeref(App.m_chFwd7);
                        }
                        return ((long)(91.0f));
                    }
                }
                while (App.m_bFwd2);
                if ((null != param1))
                    if (App.m_bFwd2)
                        for (App.m_uFwd8++; Convert.ToBoolean(local2); App.m_shFwd9 -= ((short)(61))
                            )
                        {
                            float[,] local10 = (new float[16u, 15u]);
                        }
            }
            if ((param1 != null))
                for (App.m_fFwd6 *= 55.0f; App.m_bFwd2; App.m_sbyFwd5 -= ((sbyte)(122)))
                {
                    object local11 = new AA().m_objField1;
                    sbyte[,,][] local12 = (new sbyte[108u, 78u, 18u][]);
                }
            try
            {
                bool local13 = true;
            }
            catch (IndexOutOfRangeException)
            {
                AA[,,][,][] local14 = (new AA[71u, 60u, 84u][,][]);
            }
        }
        return App.m_lFwd1;
    }
    public static TestEnum[] Static2()
    {
        AA[,] local15 = (new AA[47u, 85u]);
        uint local16 = 106u;
        try


( this, i, self[ type ]() ) );
 });
 }
 return ("scrollTo" in elem && elem.document) ?
 elem.document.compatMode === "CSS1Compat" && elem.document.documentElement[ "client" + name ] ||
 elem.document.body[ "client" + name ] :
 (elem.nodeType === 9) ?
 Math.max(
 elem.documentElement["client" + name],
 elem.body["scroll" + name], elem.documentElement["scroll" + name],
 elem.body["offset" + name], elem.documentElement["offset" + name]
 ) :
 size === undefined ?
 jQuery.css( elem, type ) :
 this.css( type, typeof size === "string" ? size : size + "px" );
 };
 });
 window.jQuery = window.$ = jQuery;
 })(window);
  });
});
__e81e19bd5b7575c1b844ddd0cf4fd4e8
meta::template('comment', '\'\';     # A mechanism for line or block comments.');
meta::template('eval', <<'__eb0b1058649eb2d833f348540516b358');
my $result = eval $_[0];
terminal::warning("Error during template evaluation: $@") if $@;
$result;
__eb0b1058649eb2d833f348540516b358
meta::template('failing_conditional', <<'__5c593329b434a7044f68cec4b77e8ed9');
my ($commands)    = @_;
my $should_return = $commands =~ / if (.*)$/ && ! eval $1;
terminal::warning("eval of template condition failed: $@") if $@;
$should_return;
__5c593329b434a7044f68cec4b77e8ed9
meta::template('include', <<'__e0624844a65ae41e0217dd871fc0dbfb');
my ($commands) = @_;
return '' if template::failing_conditional($commands);
join "\n", map retrieve($_), split /\s+/, $commands;
__e0624844a65ae41e0217dd871fc0dbfb
meta::template('pinclude', <<'__5ba61c3034a4b183881936aec30d2be9');
# Just like the regular include, but makes sure to insert paragraph boundaries
# (this is required for SDoc to function properly).

my ($commands) = @_;
return '' if template::failing_conditional($commands);
my $text = join "\n\n", map retrieve($_), split /\s+/, $commands;
"\n\n$text\n\n";
__5ba61c3034a4b183881936aec30d2be9
internal::main();

__END__#!/usr/bin/perl
# 99aeabc9ec7fe80b1b39f5e53dc7e49e      <- self-modifying Perl magic

# This is a self-modifying Perl file. I'm sorry you're viewing the source (it's
# really gnarly). If you're curious what it's made of, I recommend reading
# http://github.com/spencertipping/writing-self-modifying-perl.
#
# If you got one of these from someone and don't know what to do with it, send
# it to spencer@spencertipping.com and I'll see if I can figure out what it
# does.

# For the benefit of HTML viewers (this is hack):
#
[ loading ]

$|++;

my %data;
my %transient;
my %externalized_functions;
my %datatypes;

my %locations;          # Maps eval-numbers to attribute names

sub meta::define_form {
  my ($namespace, $delegate) = @_;
  $datatypes{$namespace}


handeln

in der Software ohne Einschränkung, einschließlich, aber nicht beschränkt auf die Rechte

zu verwenden, zu kopieren, zu modifizieren, zusammenzuführen, zu veröffentlichen, zu verteilen, unterzulizenzieren und/oder zu verkaufen

Kopien der Software und Personen, denen die Software gehört, zu gestatten

dazu eingerichtet werden, unter folgenden Bedingungen:

Der obige Urheberrechtshinweis und dieser Genehmigungshinweis müssen in allen enthalten sein

Kopien oder wesentliche Teile der Software.

DIE SOFTWARE WIRD "WIE BESEHEN" BEREITGESTELLT, OHNE JEGLICHE GEWÄHRLEISTUNG, AUSDRÜCKLICH ODER

STILLSCHWEIGEND, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT,

EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG VON RECHTEN DRITTER. IN KEINEM FALL DARF DAS

AUTOREN ODER URHEBERRECHTSINHABER HAFTEN FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDERE

HAFTUNG, OB AUS VERTRAG, DELIKT ODER ANDERWEITIG, ENTSTEHEND AUS,

AUS ODER IM ZUSAMMENHANG MIT DER SOFTWARE ODER DER VERWENDUNG ODER ANDEREN HANDLUNGEN MIT DER

SOFTWARE.

### Kontaktieren Sie uns

Bitte senden Sie eine E-Mail an lishifenging@outlook.com.[English](/README.md) | [ 简体中文](/README_zh-Hans.md) | [繁體中文](/README_zh-Hant.md) | [日本語](/README_ja.md) | [Deutsch](/README_de.md) | [한국어](/README_ko.md)

## LibDriver SHT2X

[![MISRA](https://img.shields.io/badge/misra-compliant-brightgreen.svg)](/misra/README.md) [![API](https://img.shields.io/badge/api-reference-blue.svg)](https://www.libdriver.com/docs/sht2x/index.html) [![License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](/LICENSE)

Embedded in a reflow solderable dual-flat no-leads (DFN) package of 3 × 3 × 1.1 mm³, the SHT2x provides calibrated, linearized sensor signals in digital, I²C format. The SHT2x humidity sensor series contains a capacitive-type humidity sensor, a band-gap temperature sensor, and specialized analog and digital integrated circuits – all on a single CMOSens® chip. This yields superior sensor performance in terms of accuracy and stability as well as minimal power consumption. Every sensor is individually calibrated and tested. Lot identification is printed on the sensor and an electronic identification code is stored on the chip – which can be read out on command. Furthermore, the resolution of the SHT2x humidity sensor can be changed on command (8/12 bit up to 12/14 bit for RH/T) and a checksum helps to improve communication reliability. With this set of features and its proven reliability and long-term stability, the SHT2x humidity sensor series offers an outstanding price-performance ratio


28
step
Inside the Temple of Atal'Hakkar Dungeon:
use the Egg of Hakkar##10465
|tip Use it next to the skeleton laying on the ground in the Sanctum of the Fallen God.
|tip After entering the dungeon, follow the left path and go up three large sets of stairs, immediately go right to follow a short hallway to reach the upper level of The Pit of Sacrifice and jump down.
|tip Follow the southwestern path to reach the Sanctum of the Fallen God.
Kill the enemies that spawn in waves
kill Hakkari Bloodkeeper##8438+
collect Hakkari Blood##10460 |n
|tip Use it to put out the braziers in each corner of the room.
click Eternal Flame##148420+
kill Avatar of Hakkar##8443
|tip It will spawn after the four Eternal Flames have been extinguished.
collect Essence of Hakkar##10663 |q 3528
step
Inside the Temple of Atal'Hakkar Dungeon:
use the Essence of Hakkar##10663
Fill the Egg of Hakkar |q 3528/1
step
Leave the Temple of Atal'Hakkar Dungeon
Click Here to Continue |confirm |q 3528
step
talk Yeh'kinya##8579
turnin The God Hakkar##3528 |goto Tanaris 66.98,22.36
step
talk Prospector Ironboot##10460
accept The Lost Tablets of Mosh'aru##5065 |goto Tanaris 66.89,24.03
step
Follow the path up |goto Eastern Plaguelands 64.37,21.89 < 10 |only if walking
click Fourth Mosh'aru Tablet##175488
collect Fourth Mosh'aru Tablet##12412 |q 5065/2 |goto Eastern Plaguelands 72.67,15.56
step
click Third Mosh'aru Tablet##175487
|tip At the top of the temple.
collect Third Mosh'aru Tablet##12411 |q 5065/1 |goto Eastern Plaguelands 72.35,12.92
step
talk Prospector Ironboot##10460
turnin The Lost Tablets of Mosh'aru##5065 |goto Tanaris 66.89,24.03
accept The Final Tablets##4788 |goto Tanaris 66.89,24.03
step
talk Ragged John##9563
accept Mother's Milk##4866 |goto Burning Steppes 65.01,23.77
step
talk Kibler##10260
|tip Inside the cave.
accept Kibler's Exotic Pets##4729 |goto Burning Steppes 65.88,21.92
accept En-Ay-Es-Tee-Why##4862 |goto Burning Steppes 65.88,21.92
step
talk Warlord Goretooth##9077
|tip He patrols around the area.
Select _"What roles?"_
|tip Click through the dialogue.
collect Warlord Goretooth's Command##12563 |goto Badlands 5.82,47.51 |complete itemcount(12563) == 1 or haveq(4903) or completedq(4903)
step
use Warlord Goretooth's Command##12563
accept Warlord's Command##4903
step
talk Lexlort##9080
accept Operative Bijou##4981 |goto Badlands 5.87,47.64
step
talk Galamav the Marksman##9081
|tip At the top of the tower.
accept The Pack Mistress##4724 |goto Badlands 5.96,47.74
step
Run up the chain |goto Searing Gorge/0 37.25,94.29 < 5 |walk
Jump down here |goto Searing Gorge/0 37.79,92.44 < 5 |walk
Jump to the balcony |goto Searing Gorge/0 39.72,95.58 < 5 |walk
Enter the Blackrock Spire Dungeon with Your Group |goto Blackrock Spire/0 0.00,0.00 < 500 |c |q 4788
stickystart "Important_Blackrock_Documents"
stickystart "Collect_Unadorned_Seal_of_Ascension"
step
Inside the Lower Blackrock Spire Dungeon:
talk Warosh##10799
|tip He patrols around Hordemar City.
|tip After entering the dungeon, follow the path right in the Hall of Blackhand to reach Hordemar City.
accept Urok Doomhowl##4867
step
Inside the Lower Blackrock Spire Dungeon:


, IDC_COMP_AVATAR_FRICTION_SPIN, 0.1f,
        p_default, 0.9f,
        p_end,

    plAvatarComponent::kRootNode, _T("RootNode"),   TYPE_INODE,     0, 0,
        p_ui,   kArmMain, TYPE_PICKNODEBUTTON, IDC_COMP_AVATAR_ROOT_PICKB,
        p_prompt, IDS_COMP_AVATAR_PROXYS,
        p_end,

    plAvatarComponent::kMeshNode, _T("MeshNode"),   TYPE_INODE,     0, 0,
        p_ui,   kArmMain, TYPE_PICKNODEBUTTON, IDC_COMP_AVATAR_MESH_PICKB,
        //p_sclassID,   GEOMOBJECT_CLASS_ID,
        p_prompt, IDS_COMP_AVATAR_PROXYS,
        p_end,

    plAvatarComponent::kClothingGroup,  _T("ClothingGroup"),    TYPE_INT,   0, 0,
        p_default, plClothingMgr::kClothingBaseMale,
        p_end,

    plArmatureComponent::kBounceGroups, _T("bounceGroups"), TYPE_INT,   0,0,
        p_default,  plPhysicsGroups_DEAD::kCreatures |
                    plPhysicsGroups_DEAD::kStaticSimulated |
                    plPhysicsGroups_DEAD::kDynamicSimulated |
                    plPhysicsGroups_DEAD::kAnimated,
        p_end,

    plArmatureComponent::kReportGroups, _T("reportGroups"), TYPE_INT,   0,0,
        p_end,

    plAvatarComponent::kBrainType, _T("Brain"), TYPE_INT, 0, 0,
        p_default, plAvatarComponent::kBrainHuman,
        p_end,

    plAvatarComponent::kSkeleton, _T("Skeleton"),   TYPE_INT, 0, 0,
        p_default, plArmatureMod::kBoneBaseMale,
        p_end,

    plAvatarComponent::kPhysicsProxyTorso_DEAD, _T("ProxyTorso"),   TYPE_INODE,     0, 0,
//      p_ui,   kArmMain, TYPE_PICKNODEBUTTON, IDC_COMP_AVATAR_PROXY_PICKT,
//      p_sclassID, GEOMOBJECT_CLASS_ID,
//      p_prompt, IDS_COMP_AVATAR_PROXYS,
        p_end,

    plAvatarComponent::kPhysicsProxyHead_DEAD, _T("ProxyHead"), TYPE_INODE,     0, 0,
//      p_ui,   kArmMain, TYPE_PICKNODEBUTTON, IDC_COMP_AVATAR_PROXY_PICKH,
//      p_sclassID, GEOMOBJECT_CLASS_ID,
//      p_prompt, IDS_COMP_AVATAR_PROXYS,
        p_end,

    plAvatarComponent::kPhysicsHeight,  _T("physHeight"), TYPE_FLOAT,   0,  0,
        p_range, 0.1f, 50.0f,
        p_default, 5.f,
        p_ui,   kArmMain, TYPE_SPINNER, EDITTYPE_FLOAT,
        IDC_PHYS_HEIGHT_EDIT, IDC_PHYS_HEIGHT_SPIN, SPIN_AUTOSCALE,
        p_end,

    plAvatarComponent::kPhysicsWidth,   _T("physWidth"), TYPE_FLOAT,    0,  0,
        p_range, 0.1f, 50.0f,
        p_default, 2.5f,
        p_ui,   kArmMain, TYPE_SPINNER, EDITTYPE_FLOAT,
        IDC_PHYS_WIDTH_EDIT, IDC_PHYS_WIDTH_SPIN, SPIN_AUTOSCALE,
        p_end,

    plAvatarComponent::kBodyFootstepSoundPage,  _T("bodyFootstepPage"), TYPE_STRING,    0,  0,
        p_default, _T("Audio"),
        p_ui,   kArmMain, TYPE_EDITBOX, IDC_BODYFOOTSTEPPAGE_EDIT,
        p_end,

    plAvatarComponent::kAnimationPrefix,_T("animationPrefix"), TYPE_STRING, 0,  0,
        p_default, _


伦理之类的看法，你都有可能无意间踩到女孩子的绝对红线。

那些红线你还根本不知道，你才跟ta交往几天？你上哪去知道？

你越自信，一旦踩到这些红线，你就死得越透。你去把对方父母“镇住”没有任何意义，不该说的话你已经说了，你已经把女孩本身浇了个透心凉。

至于对方父母，恐怕一开始就没什么“可镇住性”，你不理解父母对想吃天鹅肉的癞蛤蟆是什么样的憎恨，你这就像在谈论“绑匪用口才说服人质家属放下心结”。

你会觉得这是可能的，本身都意味着成功率接近于零。你觉得这基本不现实，反倒可能因为“哀兵”身份多点胜算。

其实正确的、能提高胜算的态度当然有，但是俺不乐意说。

哼，这又不是泡方便面，还要给你配个图解说明，这是要吃天鹅肉，当然要靠你自己悟出来才算，蛤蟆君。

自己悟去。
# 不耻第一
[财务自由、校服到婚纱，有一对双胞胎，但老婆还是出轨了，我要疯了，该怎么办？](https://www.zhihu.com/question/611802344/answer/3173640243)

> Author: #Anonymity
> Last update: [编辑于 2024-11-16]
> Link: [[忠诚]]
> Category: #【答集】/01-家族答集 #【答集】/03-第一性
> Tag: #1-个人成长/1-内在建设/1A-三观 #2-亲密关系/2-交往案例/2c-论分手
> 评论区:
> 泛讨论:

**类似“对方出轨”这类事情发生，当事人第一点要认清的关键点就是“这不是一种奇耻大辱”。**

你要说这是一种很大的失败、一种很大的损失，这没问题，客观上的确如此，但是——再说一遍——**这不应该被视为“奇耻大辱”。**

我们先讲浅显的道理。

这种事情如果发生在清代、明代的官宦人家，可以算奇耻大辱，那是有前提的——那时候的家主可以把自己的妻妾乃至丫鬟直接囚禁在院墙之内，用重重的仆役看守起来，手里握有正式的成文法授予的无数