missionsBoundary != null)
        'PermissionsBoundary': permissionsBoundary,
      if (roleLastUsed != null) 'RoleLastUsed': roleLastUsed,
      if (tags != null) 'Tags': tags,
    };
  }
}

/// Contains information about an IAM role, including all of the role's
/// policies.
///
/// This data type is used as a response element in the
/// GetAccountAuthorizationDetails operation.
class RoleDetail {
  final String? arn;

  /// The trust policy that grants permission to assume the role.
  final String? assumeRolePolicyDocument;

  /// A list of managed policies attached to the role. These policies are the
  /// role's access (permissions) policies.
  final List<AttachedPolicy>? attachedManagedPolicies;

  /// The date and time, in ISO 8601
  /// date-time format, when the role was created.
  final DateTime? createDate;

  /// A list of instance profiles that contain this role.
  final List<InstanceProfile>? instanceProfileList;

  /// The path to the role. For more information about paths, see IAM
  /// identifiers in the IAM User Guide.
  final String? path;

  /// The ARN of the policy used to set the permissions boundary for the role.
  ///
  /// For more information about permissions boundaries, see Permissions
  /// boundaries for IAM identities  in the IAM User Guide.
  final AttachedPermissionsBoundary? permissionsBoundary;

  /// The stable and unique string identifying the role. For more information
  /// about IDs, see IAM
  /// identifiers in the IAM User Guide.
  final String? roleId;

  /// Contains information about the last time that an IAM role was used. This
  /// includes the date and time and the Region in which the role was last used.
  /// Activity is only reported for the trailing 400 days. This period can be
  /// shorter if your Region began supporting these features within the last year.
  /// The role might have been used more than 400 days ago. For more information,
  /// see Regions
  /// where data is tracked in the IAM User Guide.
  final RoleLastUsed? roleLastUsed;

  /// The friendly name that identifies the role.
  final String? roleName;

  /// A list of inline policies embedded in the role. These policies are the
  /// role's access (permissions) policies.
  final List<PolicyDetail>? rolePolicyList;

  /// A list of tags that are attached to the role. For more information about
  /// tagging, see Tagging
  /// IAM resources in the IAM User Guide.
  final List<Tag>? tags;

  RoleDetail({
    this.arn,
    this.assumeRolePolicyDocument,
    this.attachedManagedPolicies,
    this.createDate,
    this.instanceProfileList,
    this.path,
    this.permissionsBoundary,
    this.roleId,
    this.roleLastUsed,
    this.roleName,
    this.rolePolicyList,
    this.tags,
  });
  factory RoleDetail.fromXml(_s.XmlElement elem) {
    return RoleDetail(
      arn: _s.extractXmlStringValue(elem, 'Arn'),
      assumeRolePol


    EXPECT_EQ(dq1, dq_origin * dq2);
    dq1 /= dq2;
    EXPECT_EQ(dq1, dq_origin);
}

TEST_F(DualQuatTest, basic_ops)
{
    EXPECT_EQ(dq1.getRealPart(), Quatd(1, 2, 3, 4));
    EXPECT_EQ(dq1.getDualPart(), Quatd(5, 6, 7, 8));
    EXPECT_EQ((dq1 * dq2).conjugate(), conjugate(dq1 * dq2));
    EXPECT_EQ(dq1.conjugate(), DualQuatd::createFromQuat(dq1.getRealPart().conjugate(), dq1.getDualPart().conjugate()));
    EXPECT_EQ((dq2 * dq1).conjugate(), dq1.conjugate() * dq2.conjugate());
    EXPECT_EQ(dq1.conjugate() * dq1, dq1.norm() * dq1.norm());
    EXPECT_EQ(dq1.conjugate() * dq1, dq1.norm().power(2.0));
    EXPECT_EQ(dualNumber2.power(2.0), DualQuatd(16, 0, 0, 0, 40.8, 0, 0, 0));
    EXPECT_EQ(dq1.power(2.0), (2.0 * dq1.log()).exp());
    EXPECT_EQ(power(dq1, 2.0), (exp(2.0 * log(dq1))));
    EXPECT_EQ(dq2.power(3.0 / 2, QUAT_ASSUME_UNIT).power(4.0 / 3, QUAT_ASSUME_UNIT), dq2 * dq2);
    EXPECT_EQ(dq2.power(-0.5).power(2.0), dq2.inv());
    EXPECT_EQ(power(dq1, dq2), exp(dq2 * log(dq1)));
    EXPECT_EQ(power(dq2, dq1, QUAT_ASSUME_UNIT), exp(dq1 * log(dq2)));
    EXPECT_EQ((dq2.norm() * dq1).power(2.0), dq1.power(2.0) * dq2.norm().power(2.0));
    DualQuatd q1norm = dq1.normalize();
    EXPECT_EQ(dq2.norm(), dqIdentity);
    EXPECT_NEAR(q1norm.getRealPart().norm(), 1, 1e-6);
    EXPECT_NEAR(q1norm.getRealPart().dot(q1norm.getDualPart()), 0, 1e-6);
    EXPECT_NEAR(dq1.getRotation().norm(), 1, 1e-6);
    EXPECT_NEAR(dq2.getRotation(QUAT_ASSUME_UNIT).norm(), 1, 1e-6);
    EXPECT_NEAR(dq2.getRotation(QUAT_ASSUME_UNIT).norm(), 1, 1e-6);
    EXPECT_MAT_NEAR(Mat(dq2.getTranslation()), Mat(trans), 1e-6);
    EXPECT_MAT_NEAR(Mat(q1norm.getTranslation(QUAT_ASSUME_UNIT)), Mat(dq1.getTranslation()), 1e-6);
    EXPECT_EQ(dq2.getTranslation(), dq2.getTranslation(QUAT_ASSUME_UNIT));
    EXPECT_EQ(dq1.inv() * dq1, dqIdentity);
    EXPECT_EQ(inv(dq1) * dq1, dqIdentity);
    EXPECT_EQ(dq2.inv(QUAT_ASSUME_UNIT) * dq2, dqIdentity);
    EXPECT_EQ(inv(dq2, QUAT_ASSUME_UNIT) * dq2, dqIdentity);
    EXPECT_EQ(dq2.inv(), dq2.conjugate());
    EXPECT_EQ(dqIdentity


require 'nn'
require 'sys'
require 'cutorch'
print('Running on device: ' .. cutorch.getDeviceProperties(cutorch.getDevice()).name)

gl = require 'libglconv'
gl.logging(1)
gl.useintp(1)
--gl.precision(1)	-- required on NVidia
precision = 1
torch.setdefaulttensortype('torch.FloatTensor')

steps = 10 -- nb of steps in loop to average perf

runs = {

   {
      -- first layer
      ni = 128,
      no = 128,
      kw = 3,
      kh = 3,
      iw = 128,
      ih = 128,
      bs = 128,
      dh = 1,
      dw = 1
   },
}

function nn.SpatialConvolutionMM:updateOutput(input)
	gl.precision(precision)
	if self.weight:dim() == 2 then
		self.weight = self.weight:view(self.nOutputPlane, self.nInputPlane, self.kH, self.kW)
	end
	gl.conv(input,


.set noat
.set noreorder
.set gp=64

.include "macros.inc"
.section .text, "ax"

glabel func_801E0AA0_ovl9
/* 18EAF0 801E0AA0 27BDFFD0 */  addiu $sp, $sp, -0x30
/* 18EAF4 801E0AA4 AFB1001C */  sw    $s1, 0x1c($sp)
/* 18EAF8 801E0AA8 3C118005 */ lui $s1, 0x8005
/* 18EAFC 801E0AAC 2631A7C4 */ addiu $s1, -0x583c
/* 18EB00 801E0AB0 8E220000 */  lw    $v0, ($s1)
/* 18EB04 801E0AB4 AFBF0024 */  sw    $ra, 0x24($sp)
/* 18EB08 801E0AB8 AFB20020 */  sw    $s2, 0x20($sp)
/* 18EB0C 801E0ABC AFB00018 */  sw    $s0, 0x18($sp)
/* 18EB10 801E0AC0 8C500000 */  lw    $s0, ($v0)
/* 18EB14 801E0AC4 3C0E800F */ lui $t6, 0x800f
/* 18EB18 801E0AC8 3C03800E */ lui $v1, 0x800e
/* 18EB1C 801E0ACC 00108080 */  sll   $s0, $s0, 2
/* 18EB20 801E0AD0 01D07021 */  addu  $t6, $t6, $s0
/* 18EB24 801E0AD4 8DCE8AE0 */ lw $t6, -0x7520($t6)
/* 18EB28 801E0AD8 00701821 */  addu  $v1, $v1, $s0
/* 18EB2C 801E0ADC 8C631B50 */ lw $v1, 0x1b50($v1)
/* 18EB30 801E0AE0 31CF0001 */  andi  $t7, $t6, 1
/* 18EB34 801E0AE4 11E0000B */  beqz  $t7, .L801E0B14_ovl9
/* 18EB38 801E0AE8 3C12800E */ lui $s2, 0x800e
/* 18EB3C 801E0AEC 2652DC50 */ addiu $s2, -0x23b0
/* 18EB40 801E0AF0 0250C821 */  addu  $t9, $s2, $s0
/* 18EB44 801E0AF4 2418FFFF */  li    $t8, -1
/* 18EB48 801E0AF8 AF380000 */  sw    $t8, ($t9)
/* 18EB4C 801E0AFC 0C069B04 */  jal   D_801A6C10_ovl9
/* 18EB50 801E0B00 AFA3002C */   sw    $v1, 0x2c($sp)
/* 18EB54 801E0B04 8E220000 */  lw    $v0, ($s1)
/* 18EB58 801E0B08 8FA3002C */  lw    $v1, 0x2c($sp)
/* 18EB5C 801E0B0C 8C500000 */  lw    $s0, ($v0)
/* 18EB60 801E0B10 00108080 */  sll   $s0, $s0, 2
.L801E0B14_ovl9:
/* 18EB64 801E0B14 3C08800B */ lui $t0, 0x800b
/* 18EB68 801E0B18 3C01800E */ lui $at, 0x800e
/* 18EB6C 801E0B1C 00300821 */  addu  $at, $at, $s0
/* 18EB70 801E0B20 25086FD8 */ addiu $t0, 0x6fd8
/* 18EB74 801E0B24


a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z";
    public static final String TOOLTIP = "M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 352c0 8.8-7.2 16-16 16H288l-12.8 9.6L208 428v-60H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v288z";
    public static final String WRENCH = "M507.6 122.8c-2.904-12.09-18.25-16.13-27.04-7.338l-76.55 76.56l-83.1-.0002l0-83.1l76.55-76.56c8.791-8.789 4.75-24.14-7.336-27.04c-23.69-5.693-49.34-6.111-75.92 .2484c-61.45 14.7-109.4 66.9-119.2 129.3C189.8 160.8 192.3 186.7 200.1 210.1l-178.1 178.1c-28.12 28.12-28.12 73.69 0 101.8C35.16 504.1 53.56 512 71.1 512s36.84-7.031 50.91-21.09l178.1-178.1c23.46 7.736 49.31 10.24 76.17 6.004c62.41-9.84 114.6-57.8 129.3-119.2C513.7 172.1 513.3 146.5 507.6 122.8zM80 456c-13.25 0-24-10.75-24-24c0-13.26 10.75-24 24-24s24 10.74 24 24C104 445.3 93.25 456 80 456z";
    public static final String BOOK = "M144.3 32.04C106.9 31.29 63.7 41.44 18.6 61.29c-11.42 5.026-18.6 16.67-18.6 29.15l0 357.6c0 11.55 11.99 19.55 22.45 14.65c126.3-59.14 219.8 11 223.8 14.01C249.1 478.9 252.5 480 256 480c12.4 0 16-11.38 16-15.98V80.04c0-5.203-2.531-10.08-6.781-13.08C263.3 65.58 216.7 33.35 144.3 32.04zM557.4 61.29c-45.11-19.79-88.48-29.61


c8a04193b1a0c327b166b5e5,wf_1963afc4c8a04193b1a0c327b,orig_hackone_x_01_demo;
--titleFont-text-decoration: none;
--videoInfoFont-style: normal;
--videoInfoFont-variant: normal;
--videoInfoFont-weight: normal;
--videoInfoFont-size: 25px;
--videoInfoFont-line-height: 1.4em;
--videoInfoFont-family: wfont_a8856a_1963afc4c8a04193b1a0c327b166b5e5,wf_1963afc4c8a04193b1a0c327b,orig_hackone_x_01_demo;
--videoInfoFont-text-decoration: none;
				--wix-color-1: 246,246,246;
--wix-color-2: 189,233,251;
--wix-color-3: 143,136,152;
--wix-color-4: 40,26,57;
--wix-color-5: 40,26,57;
--wix-color-6: 229,240,254;
--wix-color-7: 200,224,254;
--wix-color-8: 40,26,57;
--wix-color-9: 0,58,150;
--wix-color-10: 0,29,75;
--wix-color-11: 249,197,180;
--wix-color-12: 243,167,143;
--wix-color-13: 237,88,41;
--wix-color-14: 158,59,27;
--wix-color-15: 79,29,14;
--wix-color-16: 210,172,247;
--wix-color-17: 186,131,240;
--wix-color-18: 128,21,232;
--wix-color-19: 85,14,155;
--wix-color-20: 43,7,77;
--wix-color-21: 177,211,187;
--wix-color-22: 127,168,139;
--wix-color-23: 64,124,81;
--wix-color-24: 43,83,54;
--wix-color-25: 21,41,27;
--wix-color-26: 246,246,246;
--wix-color-27: 40,26,57;
--wix-color-28: 195,191,199;
--wix-color-29: 143,136,152;
--wix-color-30: 92,81,104;
--wix-color-31: 32,97,183;
--wix-color-32: 189,233,251;
--wix-color-33: 234,224,218;
--wix-color-34: 208,224,205;
--wix-color-35: 40,26,57;
--wix-color-36: 40,26,57;
--wix-color-37: 40,26,57;
--wix-color-38: 40,26,57;
--wix-color-39: 40,26,57;
--wix-color-40: 246,246,246;
--wix-color-41: 189,233,251;
--wix-color-42: 40,26,57;
--wix-color-43: 40,26,57;
--wix-color-44: 143,136,152;
--wix-color-45: 143,136,152;
--wix-color-46: 246,246,246;
--wix-color-47: 189,233,251;
--wix-color-48: 40,26,57;
--wix-color-49: 40,26,57;
--wix-color-50: 40,26,57;
--wix-color-51: 40,26,57;
--wix-color-52: 246,246,246;
--wix-color-53: 143,136,152;
--wix-color-54: 143,136,152;
--wix-color-55: 246,246,246;
--wix-font-Title: normal normal normal 46px/1.4em brandon-grot-w01-light,s


收集 | 针对抑郁症患者，他们最需要什么支持和帮助？请提供至少三个方面的建议。 |
| 文本编辑 | 将下列英文句子翻译成汉语：“The quick brown fox jumps over the lazy dog.” |
| 生成 | 请利用GPT-3.5生成一首含有“思念”、“离别”主题的现代诗歌。 |
| 对比 | 比较Python和Java的优缺点。 |
| 调查问卷 | 请列出至少五个可以用来评估员工满意度的问题。 |
| 统计分析 | 对于以下数据集，请计算出每个班级的平均分，并找出哪个班级的平均分最高。
数据集：https://www.kaggle.com/kwadwoofosu/predict-test-scores-of-students |
| 任务安排 | 请设计一个每日待办事项管理系统，具有添加、删除、修改待办事项、设置优先级等功能。 |
| 建议反馈 | 假设你是某大型电商网站的用户体验设计师，请为该网站提出至少三条改进建议。 |
| 数据处理 | 将以下Excel表格中的“日期”列转换成月份并新建一列输出。
Excel文件：https://file-examples-com.github.io/uploads/2017/02/file_example_XLS_10.xls |
| 烹饪技巧                              | 如何让炖肉更加入味？                                       |
| 健康生活                              | 如何在家中进行简单有效的健身运动？                       |
| 兴趣爱好                              | 如何快速入门学习弹钢琴？                                   |
| 商业管理                              | 如何提高员工工作效率并使团队更加协调？                   |
| 科技创新                              | 未来十年哪些科技发明将会改变我们的生活方式？             |
| 教育培训                              | 如何应对�


 (let effect of effects) {
      let cell = this.getCell(effect.name);
      if (cell) {
        if (cell.func === 'value') {
          cell.value = _e(`${cell.value}${effect.value}`, cell.value);
        } else {
          appendEffects.push(effect);
        }
      }
    }
    this.eval();

    // 处理appendEffects
    for (let effect of appendEffects) {
      let cell = this.getCell(effect.name);
      if (cell) {
        cell.value = _e(`${cell.value}${effect.value}`, cell.value);
      }
    }

    return this;
  }

  // 遍历所有dice方法的属性并生成表达式结果值
  generateRollResult() {
    const cells = this.getCells();

    for (var i = 0; i < cells.length; i++) {
      if (cells[i].func !== 'dice') continue;

      try {
        let t = utils.parseDiceExpression(cells[i].default);
        cells[i].value = sandbox.run(t, this.context);
      } catch (err) {
        cells[i].value = '数据错误';
        console.error('数据解析错误', cells[i].value, err);
      }
    }
  }

  // 未加状态时的数据
  getOriginData() {
    let cells = this.getCells();
    let data = {};
    for (let cell of cells) {
      let name = cell.name;
      let value = cell.originValue || cell.value;
      if (!value && cell.func === 'value') {
        value = cell.default;
      }
      data[name] = value;
    }
    return data;
  }

  getData() {
    let cells = this.getCells();
    let data = {};
    for (let cell of cells) {
      let name = cell.name;
      let value = cell.value;
      if (!value && cell.func === 'value') {
        value = cell.default;
      }
      data[name] = value;
    }
    return data;
  }

  setData(obj) {
    let cells = this.getCells();
    for (let cell of cells) {
      let name = cell.name;
      if (obj[name]) {
        cell.value = obj[name];
      }
    }
    return this.eval();
  }
}
import { Component, OnInit } from '@angular/core';
import { FormGroup, FormControl, FormBuilder, Validators } from '@angular/forms';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  title = 'ReactiveForm';
  employeeForm: FormGroup;

  constructor(private fb: FormBuilder) {}

  ngOnInit() {
    // this.employeeForm = new FormGroup({
    //   fullName: new FormControl(),
    //   email: new FormControl(),
    //   skills: new FormGroup({
    //     skillName: new FormControl(),
    //     experienceInYears: new FormControl(),
    //     proficiency: new FormControl()
    //   })
    // })
    this.employeeForm = this.fb.group({
      fullName: ['', [Validators.required, Validators.minLength(2), Validators.maxLength(30)]],
      email: [''],
      skills: this.fb.group({
        skillName: [''],
        experienceInYears: [''],
        proficiency: ['intermediate']
      })
    })

    // for subscribing to the experienceInYears control value change which is part of nested formGroup skills
    this.employeeForm.get('skills').get('experienceInYears').valueChanges.subscribe(value => {
      console.log(JSON.stringify(value));
    })

    // for subscribing to a value change of form


sertType(sLine, sCol, eLine, eCol, kind);
    }

    @DataProvider(name = "FieldAccessPosProvider")
    public Object[][] getFieldAccessPos() {
        return new Object[][]{
                // Field access
                {51, 18, 51, 29, STRING},
                {51, 18, 51, 24, RECORD},
                // Optional Field access
                {52, 15, 52, 26, UNION},
                {52, 15, 52, 21, RECORD},
                // Member access
                {53, 21, 53, 35, STRING},
                {53, 21, 53, 27, RECORD},
                {53, 28, 53, 34, STRING},
        };
    }

    @Test(dataProvider = "TypeInitPosProvider")
    public void testObjecTypeInit(int sLine, int sCol, int eLine, int eCol) {
        TypeSymbol type = getExprType(sLine, sCol, eLine, eCol);
        assertEquals(type.typeKind(), TYPE_REFERENCE);
        assertEquals(type.getName().get(), "PersonObj");
        assertEquals(((TypeReferenceTypeSymbol) type).typeDescriptor().typeKind(), OBJECT);
    }

    @DataProvider(name = "TypeInitPosProvider")
    public Object[][] getTypeInitPos() {
        return new Object[][]{
                {57, 19, 57, 33},
                {58, 19, 58, 42}
        };
    }

    @Test
    public void testObjectConstructorExpr() {
        assertType(64, 15, 68, 5, OBJECT);
        assertType(65, 22, 65, 28, STRING);
        assertType(67, 45, 67, 54, STRING);
        assertType(67, 45, 67, 49, OBJECT);
        assertType(67, 50, 67, 54, STRING);
    }

    @Test(dataProvider = "MiscExprPosProvider")
    public void testMiscExprs(int sLine, int sCol, int eLine, int eCol, TypeDescKind kind) {
        assertType(sLine, sCol, eLine, eCol, kind);
    }

    @DataProvider(name = "MiscExprPosProvider")
    public Object[][] getExprPos() {
        return new Object[][]{
                {72, 12, 72, 15, INT},
                {73, 12, 73, 23, INT},
                {73, 12, 73, 19, INT},
                {73, 17, 73, 23, null},
                {74, 12, 74, 23, INT},
                {75, 16, 75, 22, BOOLEAN},
                {76, 17, 76, 22, STRING},
                {78, 8, 78, 20, BOOLEAN},
                {78, 8, 78, 10, ANYDATA},
                {78, 14, 78, 20, STRING},
        };
    }

    @Test(dataProvider = "CheckingExprPosProvider")
    public void testCheckingExprs(int sLine, int sCol, int eLine, int eCol, TypeDescKind kind) {
        assertType(sLine, sCol, eLine, eCol, kind);
    }

    @DataProvider(name = "CheckingExprPosProvider")
    public Object[][] getCheckingExprPos() {
        return new Object[][]{
                {86, 16, 86, 27, STRING},
                {86, 22, 86, 27, UNION},
                {87, 16, 87, 32, STRING},
                {87, 27, 87, 32, UNION},
        };
    }

    @Test(dataProvider = "CastingExprPosProvider")
    public void testCastingExprs(int sLine, int sCol, int eLine, int eCol, TypeDescKind kind) {
        assertType(sLine, sCol, eLine, eCol, kind);
    }

    @DataProvider(name = "CastingExprPosProvider")
    public Object[][] getCastingExprPos() {
        return new Object[][]{
                {92, 15, 92, 25, STRING},
                {92, 23, 92, 25, ANYDATA},
                {93, 12, 93, 30, INT},
                {93, 28, 93, 30, ANYDATA},
        };
    }

    @


m_type):
        room = self.driver.find_element(by=AppiumBy.XPATH, value=room_type)
        room.click()
        time.sleep(1)
        textbox = self.driver.find_element(by=AppiumBy.XPATH, value="//XCUIElementTypeWebView/XCUIElementTypeGroup[1]/XCUIElementTypeGroup[1]/XCUIElementTypeGroup/XCUIElementTypeGroup[3]/XCUIElementTypeGroup/XCUIElementTypeGroup[5]/XCUIElementTypeGroup[2]/XCUIElementTypeGroup")
        textbox.send_keys("Lets goooo")
        send_bt = self.driver.find_element(by=AppiumBy.IOS_PREDICATE, value="label == \"Send message\"")
        send_bt.click()
        message = self.driver.find_element(by=AppiumBy.XPATH, value="(//XCUIElementTypeStaticText[@value=\"Lets goooo\"])")
        assert message.is_displayed(), "message is not displayed"

    def send_emoji(self):
        # 由於 mac2 無法點擊到 emoji 故採取直接傳送 emoji 字元
        textbox = self.driver.find_element(by=AppiumBy.XPATH, value="//XCUIElementTypeWebView/XCUIElementTypeGroup[1]/XCUIElementTypeGroup[1]/XCUIElementTypeGroup/XCUIElementTypeGroup[3]/XCUIElementTypeGroup/XCUIElementTypeGroup[5]/XCUIElementTypeGroup[2]/XCUIElementTypeGroup")
        textbox.send_keys("👍")
        send_bt = self.driver.find_element(by=AppiumBy.IOS_PREDICATE, value="label == \"Send message\"")
        send_bt.click()
        emoji_message = self.driver.find_element(by=AppiumBy.XPATH, value="(//XCUIElementTypeStaticText[@value=\"👍\"])")
        assert emoji_message.is_displayed(), "emoji message is not displayed"

    def send_attachment(self):
        attachment_bt = self.driver.find_element(by=AppiumBy.IOS_PREDICATE, value="label == \"Attachment\"")
        attachment_bt.click()
        self.driver.find_element(by=AppiumBy.XPATH, value="//XCUIElementTypeStaticText[@value=\"桌面\"]").click()
        self.driver.find_element(by=AppiumBy.XPATH, value="//XCUIElementTypeTextField[@value=\"測試報告_0811.xlsx\"]").click()
        open_bt = self.driver.find_element(by=AppiumBy.XPATH, value="//XCUIElementTypeSheet[@label=\"打開\"]/XCUIElementTypeButton[2]")
        open_bt.click()
        time.sleep(1)
        up_load_bt = self.driver.find_element(by=AppiumBy.XPATH, value="//XCUIElementTypeGroup[2]/XCUIElementTypeButton")
        up_load_bt.click()
        time.sleep(1)
        file_message = self.driver.find_element(by=AppiumBy.XPATH, value="(//XCUIElementTypeStaticText[@value=\"測試報告_0811.xlsx (108.24 kB)\"])")
        attachment_bt.click()
        self.driver.find_element(by=AppiumBy.XPATH, value="//XCUIElementTypeTextField[@value=\"pepe.jpeg\"]").click()
        open_bt = self.driver.find_element(by=AppiumBy.XPATH, value="//XCUIElementTypeSheet[@label=\"打開\"]/XCUIElementTypeButton[2]")
        open_bt.click()
        time.sleep(1)
        up_load_bt = self.driver.find_element(by=AppiumBy.XPATH, value="//XCUIElementTypeGroup[2]/XCUIElementTypeButton")
        up_load_bt.click()
        time.sleep(1)
        image_message = self.driver.find_element(by=AppiumBy.XPATH, value="(//XCUIElementTypeImage[@label=\"pepe.jpeg\"])")
        assert file_message.is_displayed(), "file message is not displayed"
        assert image_message.is_displayed(), "image message is not displayed"

    def search_history(self):
        search_icon = self.driver.find_element(by=AppiumBy.XPATH, value="//XCUIElementTypeButton[@label=\"Search\"]")
        search_icon.click()
        self.driver.find_element(by=AppiumBy.XPATH, value="//XCUIElementTypeTextField").send_keys("Lets")
        search_bt = self.driver.find_element(by=AppiumBy.XPATH, value="//XCUIElementTypeWebView/XCUIElementTypeGroup[1]/XCUIElementTypeGroup[1]/XCUIElementTypeGroup/XCUIElementTypeGroup[3]/XCUIElementTypeGroup/XCUIElementTypeGroup[2]/XCUIElementTypeButton[1]")
        search_bt.click()
        time.sleep(1)
        history_message = self.driver.find_element(by=AppiumBy.XPATH, value="(//XCUIElementTypeLink[@label=\"Lets goooo\"])/XCUIElementTypeGroup")
        assert history_message.is_displayed(), "history is not displayed"
        cancel_bt = self.driver.find_element(by=AppiumBy.XPATH, value="//XCUIElementTypeWebView/XCUIElementTypeGroup[1]/XCUIElementTypeGroup[1]/XCUIElementTypeGroup/XCUIElementTypeGroup[3]/XCUIElementTypeGroup/XCUIElementTypeGroup[2]/XCUIElementTypeButton[2]")
        cancel_bt.click()

    def favorite(self, favorite_type, room_type, cancelled_room):
        room_options = self.driver.find_element(by=AppiumBy.XPATH, value="//XCUIElementTypePopUpButton[@label=\"Room options\"]")
        room_options.click()
        self.ck


(_ret, _lib, retain: true, release: true);
  }

  NSDate nextDateAfterDate_matchingUnit_value_options_(
      NSDate? date, int unit, int value, int options) {
    final _ret = _lib._objc_msgSend_692(
        _id,
        _lib._sel_nextDateAfterDate_matchingUnit_value_options_1,
        date?._id ?? ffi.nullptr,
        unit,
        value,
        options);
    return NSDate._(_ret, _lib, retain: true, release: true);
  }

  NSDate nextDateAfterDate_matchingHour_minute_second_options_(NSDate? date,
      int hourValue, int minuteValue, int secondValue, int options) {
    final _ret = _lib._objc_msgSend_693(
        _id,
        _lib._sel_nextDateAfterDate_matchingHour_minute_second_options_1,
        date?._id ?? ffi.nullptr,
        hourValue,
        minuteValue,
        secondValue,
        options);
    return NSDate._(_ret, _lib, retain: true, release: true);
  }

  NSDate dateBySettingUnit_value_ofDate_options_(
      int unit, int v, NSDate? date, int opts) {
    final _ret = _lib._objc_msgSend_689(
        _id,
        _lib._sel_dateBySettingUnit_value_ofDate_options_1,
        unit,
        v,
        date?._id ?? ffi.nullptr,
        opts);
    return NSDate._(_ret, _lib, retain: true, release: true);
  }

  NSDate dateBySettingHour_minute_second_ofDate_options_(
      int h, int m, int s, NSDate? date, int opts) {
    final _ret = _lib._objc_msgSend_694(
        _id,
        _lib._sel_dateBySettingHour_minute_second_ofDate_options_1,
        h,
        m,
        s,
        date?._id ?? ffi.nullptr,
        opts);
    return NSDate._(_ret, _lib, retain: true, release: true);
  }

  bool date_matchesComponents_(NSDate? date, NSDateComponents? components) {
    return _lib._objc_msgSend_695(_id, _lib._sel_date_matchesComponents_1,
        date?._id ?? ffi.nullptr, components?._id ?? ffi.nullptr);
  }

  static NSCalendar new1(SwiftLibrary _lib) {
    final _ret = _lib._objc_msgSend_2(_lib._class_NSCalendar1, _lib._sel_new1);
    return NSCalendar._(_ret, _lib, retain: false, release: true);
  }

  static NSCalendar alloc(SwiftLibrary _lib) {
    final _ret =
        _lib._objc_msgSend_2(_lib._class_NSCalendar1, _lib._sel_alloc1);
    return NSCalendar._(_ret, _lib, retain: false, release: true);
  }

  static void cancelPreviousPerformRequestsWithTarget_selector_object_(
      SwiftLibrary _lib,
      NSObject aTarget,
      ffi.Pointer<ObjCSel> aSelector,
      NSObject anArgument) {
    return _lib._objc_msgSend_14(
        _lib._class_NSCalendar1,
        _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1,
        aTarget._id,
        aSelector,
        anArgument._id);
  }

  static void cancelPreviousPerformRequestsWithTarget_(
      SwiftLibrary _lib, NSObject aTarget) {
    return _lib._objc_msgSend_15(_lib._class_NSCalendar1,
        _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id);
  }

  static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) {
    return _lib._objc_msgSend_12(


fault: true,
    });
    map.set(media.id, media);
};
// tslint:disable: max-line-length
const buildExercisesMediaMap = (): Map<string, ExerciseMediaBean> => {
    const exercises = new Map<string, ExerciseMediaBean>();
    // Upper Body
    addMedia(
        exercises,
        'bent dumbbells lateral raise',
        ['bent dumbbells lateral raise.jpg'],
        [Muscles.Shoulders, Muscles.Forearms, Muscles.Traps, Muscles.Back],
        'Standing with a dumbbell in each hand, bend over at the hips until your torso is just about parallel to the floor. Keep your chest out, back flat and your knees slightly bent, and let the dumbbells hang directly beneath you with your elbows straight but not locked out, palms facing each other.',
    );
    addMedia(
        exercises,
        'lateral raises',
        ['dumbbells lateral raises.jpg'],
        [Muscles.Forearms, Muscles.Chest, Muscles.Obliques],
        'Grasp dumbbells in front of thighs with elbows slightly bent. Bend over slightly with hips and knees bent slightly. Raise upper arms to sides until elbows are shoulder height. Maintain elbows height above or equal to wrists. Lower and repeat.',
    );
    addMedia(
        exercises,
        'bent triceps extensions',
        ['bent triceps extension dumbbell 1.jpg',
        'bent triceps extension dumbbell 2.jpg'],
        [Muscles.Triceps, Muscles.Forearms],
        'Bent over and place your left hand on yor knee. Grab a dumbbell with your right hand. Your upper arm should be parallel to the floor and arm bent at the elbow with the lower arm straight down. Slowly extend your arm back until your arm is fully extended.',
    );
    addMedia(
        exercises,
        'cable lat pulldown',
        ['cable lat pulldown.jpg'],
        [Muscles.Shoulders, Muscles.Forearms, Muscles.Traps],
        'Grasp cable bar with wide grip. Sit with thighs under supports. Pull down cable bar to upper chest. Return until arms and shoulders are fully extended.',
    );
    addMedia(
        exercises,
        'upright row',
        ['dumbbell upright row.jpg'],
        [Muscles.Shoulders, Muscles.Forearms, Muscles.Traps, Muscles.Back],
        'Hold the dumbbells in front of your body, pull the weight vertically to about neck height and then lower under control.',
    );
    addMedia(
        exercises,
        'seated shoulder press',
        ['seated shoulder press.jpg'],
        [Muscles.Shoulders, Muscles.Chest, Muscles.Forearms],
        'Hold a dumbbell in each hand and sit on a bench with back support. Bend your elbows and raise your upper arms to shoulder height so the dumbbells are at ear level. Push the dumbbells up and in until the ends of the dumbbells touch lightly, directly over your head, and then lower the dumbbells back to ear level.',
    );
    addMedia(
        exercises,
        'standing triceps extension',
        ['standing triceps extension dumbbell 1.jpg', 'standing triceps extension dumbbell 2.jpg'],
        [Muscles.Shoulders, Muscles.Triceps, Muscles.Forearms],


 0; i < pathEdges.size(); ++i )
    {
      pathNodes2.push_back( pathNodes[i] );
      pathEdges2.push_back( pathEdges[i] );
      if ( pathEdges[i]->IsQuadratic() )
      {
        pathNodes2.push_back( pathEdges[i]->GetNode(2) );
        pathEdges2.push_back( pathEdges[i] );
      }
    }
    pathNodes2.push_back( pathNodes.back() );
    pathEdges.swap( pathEdges2 );
    pathNodes.swap( pathNodes2 );
  }

  // 3. Get path data at pathNodes

  std::vector< ExtrusParam::PathPoint > points( pathNodes.size() );

  if ( theAngleVariation )
    linearAngleVariation( points.size()-1, theAngles );
  if ( theScaleVariation )
    linearScaleVariation( points.size()-1, theScales );

  theAngles.push_front( 0 ); // for the 1st point that is not transformed
  std::list<double>::iterator angle = theAngles.begin();

  SMESHDS_Mesh* pathMeshDS = theTrackMesh->GetMeshDS();

  std::map< int, double > edgeID2OriFactor; // orientation of EDGEs
  std::map< int, double >::iterator id2factor;
  SMESH_MesherHelper pathHelper( *theTrackMesh );
  gp_Pnt p; gp_Vec tangent;
  const double tol2 = gp::Resolution() * gp::Resolution();

  for ( size_t i = 0; i < pathNodes.size(); ++i )
  {
    ExtrusParam::PathPoint & point = points[ i ];

    point.myPnt = SMESH_NodeXYZ( pathNodes[ i ]);

    if ( angle != theAngles.end() )
      point.myAngle = *angle++;

    tangent.SetCoord( 0,0,0 );
    const int          shapeID = pathNodes[ i ]->GetShapeID();
    const TopoDS_Shape&  shape = pathMeshDS->IndexToShape( shapeID );
    TopAbs_ShapeEnum shapeType = shape.IsNull() ? TopAbs_SHAPE : shape.ShapeType();
    switch ( shapeType )
    {
    case TopAbs_EDGE:
    {
      TopoDS_Edge edge = TopoDS::Edge( shape );
      id2factor = edgeID2OriFactor.insert( std::make_pair( shapeID, 0 )).first;
      if ( id2factor->second == 0 )
      {
        if ( i ) id2factor->second = getOriFactor( edge, pathNodes[i-1], pathNodes[i], pathHelper );
        else     id2factor->second = getOriFactor( edge, pathNodes[i], pathNodes[i+1], pathHelper );
      }
      double u = pathHelper.GetNodeU( edge, pathNodes[i] ), u0, u1;
      Handle(Geom_Curve) curve = BRep_Tool::Curve( edge, u0, u1 );
      curve->D1( u, p, tangent );
      tangent *= id2factor->second;
      break;
    }
    case TopAbs_VERTEX:
    {
      int nbEdges = 0;
      PShapeIteratorPtr shapeIt = pathHelper.GetAncestors( shape, *theTrackMesh, TopAbs_EDGE );
      while ( const TopoDS_Shape* edgePtr = shapeIt->next() )
      {
        int edgeID = pathMeshDS->ShapeToIndex( *edgePtr );
        for ( int di = -1; di <= 0; ++di )
        {
          size_t j = i + di;
          if ( j < pathEdges.size() && edgeID == pathEdges[ j ]->GetShapeID() )
          {
            TopoDS_Edge edge = TopoDS::Edge( *edgePtr );
            id2factor = edgeID2OriFactor.insert( std::make_pair( edgeID, 0 )).first;
            if ( id2factor->second == 0 )
            {
              if ( j < i )
                id2factor->second = getOriFactor( edge, pathNodes[i-1], pathNodes[i], pathHelper );
              else
                id2factor->second = getOriFactor( edge, pathNodes[i], pathNodes[i+1], pathHelper );
            }


agnum => name,
        GunslingerAmmo::Ignite => match name {
            "Spark Shot" => "Snap Shot",
            "Explosive Blast" => "Aimed Shot",
            "Dragon's Breath" => "Triple Shot",
            "Hot Hands" => "Quick Shot",
            _ => panic!("Unknown concrete skill {}", name),
        },
        GunslingerAmmo::Cyclone => match name {
            "Airburst Shot" => "Snap Shot",
            "Air Lance" => "Aimed Shot",
            "Tornado Shot" => "Triple Shot",
            "Lightning Speed" => "Quick Shot",
            _ => panic!("Unknown concrete skill {}", name),
        },
    };

    let mut skill = templates.iter().find(|&skill_name| base_name == skill_name.name).unwrap().clone();
    if ammo == GunslingerAmmo::Magnum {
        return skill;
    }

    skill.name = name.to_string();

    let get_damage = |e: &SkillEffect| match e {
        SkillEffect::RangedAttack(damage, _) => damage.dice(),
        SkillEffect::MoveAndShoot(damage, _, _) => damage.dice(),
        _ => panic!("instance_skill_for_ammo processing damage of attack: {}", name),
    };

    let get_range = |e: &SkillEffect| match e {
        SkillEffect::MoveAndShoot(_, range, _) => *range,
        _ => panic!("instance_skill_for_ammo processing range of attack: {}", name),
    };

    match name {
        "Spark Shot" => {
            skill.image = Some("gun_01_b.png".to_string());
            skill.range = skill.range.map(|r| r + 1);
            skill.effect = SkillEffect::RangedAttack(
                Damage::init(get_damage(&skill.effect) - 1, DamageElement::PHYSICAL).with_option(DamageOptions::RAISE_TEMPERATURE),
                BoltKind::FireBullet,
            );
        }
        "Explosive Blast" => {
            skill.image = Some("SpellBook01_37.png".to_string());
            skill.range = skill.range.map(|r| r + 1);
            skill.effect = SkillEffect::RangedAttack(
                Damage::init(get_damage(&skill.effect) - 1, DamageElement::PHYSICAL | DamageElement::FIRE)
                    .with_option(DamageOptions::RAISE_TEMPERATURE)
                    .with_option(DamageOptions::LARGE_TEMPERATURE_DELTA),
                BoltKind::FireBullet,
            );
        }
        "Dragon's Breath" => {
            skill.image = Some("r_16.png".to_string());
            skill.range = skill.range.map(|r| r + 2);
            skill.effect = SkillEffect::RangedAttack(
                Damage::init(get_damage(&skill.effect) - 1, DamageElement::FIRE)
                    .with_option(DamageOptions::TRIPLE_SHOT)
                    .with_option(DamageOptions::RAISE_TEMPERATURE),
                BoltKind::FireBullet,
            );
        }
        "Hot Hands" => {
            skill.image = Some("SpellBook01_15.png".to_string());
            skill.effect = SkillEffect::MoveAndShoot(
                Damage::init(get_damage(&skill.effect) - 1, DamageElement::PHYSICAL).with_option(DamageOptions::RA


return AdvancedEventSelector(
      fieldSelectors: (json['FieldSelectors'] as List)
          .nonNulls
          .map((e) => AdvancedFieldSelector.fromJson(e as Map<String, dynamic>))
          .toList(),
      name: json['Name'] as String?,
    );
  }

  Map<String, dynamic> toJson() {
    final fieldSelectors = this.fieldSelectors;
    final name = this.name;
    return {
      'FieldSelectors': fieldSelectors,
      if (name != null) 'Name': name,
    };
  }
}

/// A single selector statement in an advanced event selector.
class AdvancedFieldSelector {
  /// A field in a CloudTrail event record on which to filter events to be logged.
  /// For event data stores for CloudTrail Insights events, Config configuration
  /// items, Audit Manager evidence, or events outside of Amazon Web Services, the
  /// field is used only for selecting events as filtering is not supported.
  ///
  /// For CloudTrail management events, supported fields include
  /// readOnly, eventCategory, and
  /// eventSource.
  ///
  /// For CloudTrail data events, supported fields include readOnly,
  /// eventCategory, eventName,
  /// resources.type, and resources.ARN.
  ///
  /// For event data stores for CloudTrail Insights events, Config configuration
  /// items, Audit Manager evidence, or events outside of Amazon Web Services, the
  /// only supported field is eventCategory.
  ///
  ///

  ///

  ///  readOnly  - Optional. Can be set to Equals
  /// a value of true or false. If you do not add this
  /// field, CloudTrail logs both read and write events.
  /// A value of true logs only read events. A value of
  /// false logs only write events.
  ///

  ///

  ///  eventSource  - For filtering management events only.
  /// This can be set to NotEquals kms.amazonaws.com or
  /// NotEquals rdsdata.amazonaws.com.
  ///

  ///

  ///  eventName  - Can use any operator. You can use it to
  /// ﬁlter in or ﬁlter out any data event logged to CloudTrail, such as
  /// PutBucket or GetSnapshotBlock. You can have
  /// multiple values for this ﬁeld, separated by commas.
  ///

  ///

  ///  eventCategory  - This is required and must be set to
  /// Equals.
  ///
  ///

  ///

  /// For CloudTrail management events, the value must be Management.
  ///

  ///

  /// For CloudTrail data events, the value must be Data.
  ///

  ///

  /// The following are used only for event data stores:
  ///
  ///

  ///

  /// For CloudTrail Insights events, the value must be Insight.
  ///

  ///

  /// For Config configuration items, the value must be
  /// ConfigurationItem.
  ///

  ///

  /// For Audit Manager evidence, the value must be Evidence.
  ///

  ///

  /// For non-Amazon Web Services events, the value must


lateignore
world.txt`,
		tfs.WithDir("aa",
			tfs.WithDir("a1",
				tfs.WithDir("a2",
					tfs.WithFile("hello.txt", "..."),
					tfs.WithFile("world.txt", "...")),
				tfs.WithFile("hello.txt", "..."),
				tfs.WithFile("world.txt", "...")),
			tfs.WithFile("hello.txt", "..."),
			tfs.WithFile("world.txt", "...")),
		tfs.WithDir("bb",
			tfs.WithFile("hello.txt", "..."),
			tfs.WithFile("world.txt", "...")),
		tfs.WithFile("hello.txt", "..."),
		tfs.WithFile("world.txt", "..."),
	)

	require.NoError(t, err)
	assert.Equal(t, fromSlashes(
		"aa/a1/a2/hello.txt", "aa/a1/hello.txt",
		"aa/hello.txt", "bb/hello.txt", "hello.txt"), files)
}

func TestGomplateignore_BothName(t *testing.T) {
	files, err := execute(t, `.gomplateignore
loss.txt
!2.log
`,
		tfs.WithDir("loss.txt",
			tfs.WithFile("1.log", "xxx"),
			tfs.WithFile("2.log", "xxx")),
		tfs.WithDir("foo",
			tfs.WithFile("loss.txt", "xxx"),
			tfs.WithFile("bare.txt", "xxx")),
	)

	require.NoError(t, err)
	assert.Equal(t, fromSlashes(
		"foo/bare.txt", "loss.txt/2.log"), files)
}

func TestGomplateignore_LeadingSpace(t *testing.T) {
	files, err := execute(t, `.gomplateignore
  what.txt
!inner/  what.txt
*.log
!  dart.log
`,
		tfs.WithDir("inner",
			tfs.WithFile("  what.txt", "xxx"),
			tfs.WithFile("  dart.log", "xxx")),
		tfs.WithDir("inner2",
			tfs.WithFile("  what.txt", "xxx")),
		tfs.WithFile("  what.txt", "xxx"),
	)

	require.NoError(t, err)
	assert.Equal(t, fromSlashes(
		"inner/  dart.log", "inner/  what.txt"), files)
}

func TestGomplateignore_WithExcludes(t *testing.T) {
	files, err := executeOpts(t, `.gomplateignore
*.log
`, []string{
		"--exclude", "crash.bin",
		"--exclude", "rules/*.txt",
		"--exclude", "sprites/*.ini",
	},
		tfs.WithDir("logs",
			tfs.WithFile("archive.zip", "x"),
			tfs.WithFile("engine.log", "x"),
			tfs.WithFile("skills.log", "x")),
		tfs.WithDir("rules",
			tfs.WithFile("index.csv", "x"),
			tfs.WithFile("fire.txt", "x"),
			tfs.WithFile("earth.txt", "x")),
		tfs.WithDir("sprites",
			tfs.WithFile("human.csv", "x"),
			tfs.WithFile("demon.xml", "x"),
			tfs.WithFile("alien.ini", "x")),
		tfs.WithFile("manifest.json", "x"),
		tfs.WithFile("crash.bin", "x"),
	)

	require.NoError(t, err)
	assert.Equal(t, fromSlashes(
		"logs/archive.zip", "manifest.json", "rules/index.csv",
		"sprites


def ASSERT
    for( uint l = _bb_start; l < _bb_end; l++ ) {
      Node *n = bb->get_node(l);
      uint m;
      for( m = 0; m < _bb_end-_bb_start; m++ )
        if( _scheduled[m] == n )
          break;
      assert( m < _bb_end-_bb_start, "instruction missing in schedule" );
    }
#endif

    // Now copy the instructions (in reverse order) back to the block
    for ( uint k = _bb_start; k < _bb_end; k++ )
      bb->map_node(_scheduled[_bb_end-k-1], k);

#ifndef PRODUCT
    if (_cfg->C->trace_opto_output()) {
      tty->print("#  Schedule BB#%03d (final)\n", i);
      uint current = 0;
      for (uint j = 0; j < bb->number_of_nodes(); j++) {
        Node *n = bb->get_node(j);
        if( valid_bundle_info(n) ) {
          Bundle *bundle = node_bundling(n);
          if (bundle->instr_count() > 0 || bundle->flags() > 0) {
            tty->print("*** Bundle: ");
            bundle->dump();
          }
          n->dump();
        }
      }
    }
#endif
#ifdef ASSERT
  verify_good_schedule(bb,"after block local scheduling");
#endif
  }

#ifndef PRODUCT
  if (_cfg->C->trace_opto_output())
    tty->print("# <- DoScheduling\n");
#endif

  // Record final node-bundling array location
  _regalloc->C->set_node_bundling_base(_node_bundling_base);

} // end DoScheduling

// Verify that no live-range used in the block is killed in the block by a
// wrong DEF.  This doesn't verify live-ranges that span blocks.

// Check for edge existence.  Used to avoid adding redundant precedence edges.
static bool edge_from_to( Node *from, Node *to ) {
  for( uint i=0; i<from->len(); i++ )
    if( from->in(i) == to )
      return true;
  return false;
}

#ifdef ASSERT
void Scheduling::verify_do_def( Node *n, OptoReg::Name def, const char *msg ) {
  // Check for bad kills
  if( OptoReg::is_valid(def) ) { // Ignore stores & control flow
    Node *prior_use = _reg_node[def];
    if( prior_use && !edge_from_to(prior_use,n) ) {
      tty->print("%s = ",OptoReg::as_VMReg(def)->name());
      n->dump();
      tty->print_cr("...");
      prior_use->dump();
      assert(edge_from_to(prior_use,n),msg);
    }
    _reg_node.map(def,NULL); // Kill live USEs
  }
}

void Scheduling::verify_good_schedule( Block *b, const char *msg ) {

  // Zap to something reasonable for the verify code
  _reg_node.clear();

  // Walk over the block backwards.  Check to make sure each DEF doesn't
  // kill a live value (other than the one it's supposed to).  Add each
  // USE to the live set.
  for( uint i = b->number_of_nodes()-1; i >= _bb_start; i-- ) {
    Node *n = b->get_node(i);
    int n_op = n->Opcode();
    if( n_op == Op_MachProj && n->ideal_reg() == MachProjNode::fat_proj ) {
      // Fat-proj kills a slew of registers
      RegMask rm = n->out_RegMask();// Make local copy
      while( rm.is_NotEmpty() ) {
        OptoReg::Name kill = rm.find_first_elem();
        rm.Remove(kill);
        verify_do_def( n, kill, msg );
      }
    } else if( n_op != Op_Node ) { // Avoid brand new antidependence nodes
      // Get DEF'd registers the normal way
      verify_do_def( n, _


2.4s, v2.4s
uqxtn v2.4h, v2.4s
uqxtn v2.8b, v2.8h

fadd v0.2s, v0.2s, v1.


:
- COM
api_location:
- Shell32.dll
---

# Folder.Title property

Contains the title of the folder.

This property is read-only.

## Syntax

```JScript
strTitle = Folder.Title
```

## Property value

A string containing the object's title.

## Remarks

> [!Note]
> Not all methods are implemented for all folders. For example, the [**ParseName**](folder-parsename.md) method is not implemented for the Control Panel folder (CSIDL\_CONTROLS). If you attempt to call an unimplemented method, a 0x800A01BD (decimal 445) error is raised.

## Examples

The following example uses **Title** to retrieve the title of the folder holding the user's program groups (usually "Programs"). Proper usage is shown for JScript, VBScript, and Visual Basic.

JScript:

```JScript
<script language="JScript">
    function fnFolderTitleJ()
    {
        var objShell    = new ActiveXObject("shell.application");
        var objFolder;
        var ssfPROGRAMS = 2;

        objFolder = objShell.NameSpace(ssfPROGRAMS);
        if (objFolder != null)
        {
            alert(objFolder.Title);
        }
    }
</script>
```

VBScript:

```VB
<script language="VBScript">
    function fnFolderTitleVB()
        dim objShell

        set objShell = CreateObject("shell.application")
        if (not objShell is nothing) then
            dim objFolder
            dim ssfPROGRAMS

            ssfPROGRAMS = 2
            set objFolder = objShell.NameSpace(ssfPROGRAMS)
            if (not objFolder is nothing) then
                alert(objFolder.Title)
            end if
            set objFolder = nothing
        end if
        set objShell = nothing
    end function
 </script>
```

Visual Basic:

```VB
Private Sub fnFolderTitleVB()
    Dim objShell    As Shell
    Dim objFolder   As Folder
    Dim ssfPROGRAMS As Long

    ssfPROGRAMS = 2
    Set objShell = New Shell
    Set objFolder = objShell.NameSpace(ssfPROGRAMS)
    If (Not objFolder Is Nothing) Then
        Debug.Print objFolder.Title
    End If
    Set objFolder = Nothing
    Set objShell = Nothing
End Sub
```

## Requirements

| Requirement | Value |
|-------------------------------------|----------------------------------------------------------------------------------------------------------------|
| Minimum supported client
 | Windows 2000 Professional, Windows XP \[desktop apps only\]
                                         |
| Minimum supported server
 | Windows 2000 Server \[desktop apps only\]
                                                           |
| Header
                   |

Shldisp.h

                           |
| IDL
                      |

Shldisp.idl

                         |
| DLL
                      |

Shell32.dll (version 4.71 or later)

 |

---
description: Windows supplies default icons for every item displayed on the desktop and in Windows Explorer.
ms.assetid: '1827239c-0588-45aa-b7be-f96fb7affa65'
title: Customizing Icons
ms.topic: concept-article
ms.date: 05/31/2018
---

# Customizing Icons

Windows supplies default icons for every item displayed on the desktop and in Windows Explorer. Mass storage devices, such as disk drives, are also assigned default icons. However, these icons often provide little insight to the user as to the contents of the file or what program is associated with it. You can assign a custom icon to a file syste


Error(AL_INVALID_NAME, "Invalid effect ID %u", effect);
    else try
    {
        /* Call the appropriate handler */
        ALeffect_setParamfv(aleffect, param, values);
    }
    catch(effect_exception &e) {
        context->setError(e.errorCode(), "%s", e.what());
    }
}
END_API_FUNC

AL_API void AL_APIENTRY alGetEffecti(ALuint effect, ALenum param, ALint *value)
START_API_FUNC
{
    ContextRef context{GetContextRef()};
    if UNLIKELY(!context) return;

    ALCdevice *device{context->mDevice.get()};
    std::lock_guard<std::mutex> _{device->EffectLock};

    const ALeffect *aleffect{LookupEffect(device, effect)};
    if UNLIKELY(!aleffect)
        context->setError(AL_INVALID_NAME, "Invalid effect ID %u", effect);
    else if(param == AL_EFFECT_TYPE)
        *value = aleffect->type;
    else try
    {
        /* Call the appropriate handler */
        ALeffect_getParami(aleffect, param, value);
    }
    catch(effect_exception &e) {
        context->setError(e.errorCode(), "%s", e.what());
    }
}
END_API_FUNC

AL_API void AL_APIENTRY alGetEffectiv(ALuint effect, ALenum param, ALint *values)
START_API_FUNC
{
    switch(param)
    {
    case AL_EFFECT_TYPE:
        alGetEffecti(effect, param, values);
        return;
    }

    ContextRef context{GetContextRef()};
    if UNLIKELY(!context) return;

    ALCdevice *device{context->mDevice.get()};
    std::lock_guard<std::mutex> _{device->EffectLock};

    const ALeffect *aleffect{LookupEffect(device, effect)};
    if UNLIKELY(!aleffect)
        context->setError(AL_INVALID_NAME, "Invalid effect ID %u", effect);
    else try
    {
        /* Call the appropriate handler */
        ALeffect_getParamiv(aleffect, param, values);
    }
    catch(effect_exception &e) {
        context->setError(e.errorCode(), "%s", e.what());
    }
}
END_API_FUNC

AL_API void AL_APIENTRY alGetEffectf(ALuint effect, ALenum param, ALfloat *value)
START_API_FUNC
{
    ContextRef context{GetContextRef()};
    if UNLIKELY(!context) return;

    ALCdevice *device{context->mDevice.get()};
    std::lock_guard<std::mutex> _{device->EffectLock};

    const ALeffect *aleffect{LookupEffect(device, effect)};
    if UNLIKELY(!aleffect)
        context->setError(AL_INVALID_NAME, "Invalid effect ID %u", effect);
    else try
    {
        /* Call the appropriate handler */
        ALeffect_getParamf(aleffect, param, value);
    }
    catch(effect_exception &e) {
        context->setError(e.errorCode(), "%s", e.what());
    }
}
END_API_FUNC

AL_API void AL_APIENTRY alGetEffectfv(ALuint effect, ALenum param, ALfloat *values)
START_API_FUNC
{
    ContextRef context{GetContextRef()};
    if UNLIKELY(!context) return;

    ALCdevice *device{context->mDevice.get()


local util = require 'lspconfig.util'

local bin_name = 'dart'

local find_dart_sdk_root_path = function()
  if os.getenv 'FLUTTER_SDK' then
    local flutter_path = os.getenv 'FLUTTER_SDK'
    return util.path.join(flutter_path, 'cache', 'dart-sdk', 'bin', 'dart')
  elseif vim.fn['executable'] 'flutter' == 1 then
    local flutter_path = vim.fn['resolve'](vim.fn['exepath'] 'flutter')
    local flutter_bin = vim.fn['fnamemodify'](flutter_path, ':h')
    return util.path.join(flutter_bin, 'cache', 'dart-sdk', 'bin', 'dart')
  elseif vim.fn['executable'] 'dart' == 1 then
    return vim.fn['resolve'](vim.fn['exepath'] 'dart')
  else
    return ''
  end
end

local analysis_server_snapshot_path = function()
  local dart_sdk_root_path = vim.fn['fnamemodify'](find_dart_sdk_root_path(), ':h')
  local snapshot = util.path.join(dart_sdk_root_path, 'snapshots', 'analysis_ser


EXPECT_TRUE(IsSameSite(&context, url_javascript, url_foo_https));
  EXPECT_TRUE(IsSameSite(&context, url_javascript, url_foo_port));

  // Navigating to a blank page is considered the same site.
  EXPECT_TRUE(IsSameSite(&context, url_foo, url_blank));
  EXPECT_TRUE(IsSameSite(&context, url_foo_https, url_blank));
  EXPECT_TRUE(IsSameSite(&context, url_foo_port, url_blank));

  // Navigating from a blank site is not considered to be the same site.
  EXPECT_FALSE(IsSameSite(&context, url_blank, url_foo));
  EXPECT_FALSE(IsSameSite(&context, url_blank, url_foo_https));
  EXPECT_FALSE(IsSameSite(&context, url_blank, url_foo_port));

  DrainMessageLoop();
}

// Test that two file URLs are considered same-site if they have the same path,
// even if they have different fragments.
TEST_F(SiteInstanceTest, IsSameSiteForFileURLs) {
  TestBrowserContext context;

  // Two identical file URLs should be same-site.
  EXPECT_TRUE(IsSameSite(&context, GURL("file:///foo/bar.html"),
                         GURL("file:///foo/bar.html")));

  // File URLs with the same path but different fragment are considered
  // same-site.
  EXPECT_TRUE(IsSameSite(&context, GURL("file:///foo/bar.html"),
                         GURL("file:///foo/bar.html#baz")));
  EXPECT_TRUE(IsSameSite(&context, GURL("file:///foo/bar.html#baz"),
                         GURL("file:///foo/bar.html")));
  EXPECT_TRUE(IsSameSite(&context, GURL("file:///foo/bar.html#baz"),
                         GURL("file:///foo/bar.html#qux")));
  EXPECT_TRUE(IsSameSite(&context, GURL("file:///#abc"), GURL("file:///#def")));

  // Other cases are cross-site.
  EXPECT_FALSE(IsSameSite(&context, GURL("file:///foo.html"),
                          GURL("file:///foo/bar.html")));
  EXPECT_FALSE(
      IsSameSite(&context, GURL("file:///#bar"), GURL("file:///foo/#bar")));
}

// Test to ensure that there is only one SiteInstance per site in a given
// BrowsingInstance, when process-per-site is not in use.
TEST_F(SiteInstanceTest, OneSiteInstancePerSite) {
  ASSERT_FALSE(base::CommandLine::ForCurrentProcess()->HasSwitch(
      switches::kProcessPerSite));
  std::unique_ptr<TestBrowserContext> browser_context(new TestBrowserContext());
  BrowsingInstance* browsing_instance = new BrowsingInstance(
      browser_context.get(), WebExposedIsolationInfo::CreateNonIsolated(),
      /*is_guest=*/false);

  const GURL url_a1("http://www.google.com/1.html");
  scoped_refptr<SiteInstanceImpl> site_instance_a1(
      browsing_instance->GetSiteInstanceForURL(
          UrlInfo::CreateForTesting(url_a1), false));
  EXPECT_TRUE(site_instance_a1.get() != nullptr);

  // A separate site should create a separate SiteInstance.
  const GURL url_b1("http://www.yahoo.com/");
  scoped_refptr<SiteInstanceImpl> site_instance_b1(

      browsing_instance->GetSiteInstanceForURL(
          UrlInfo::CreateForTesting(url_b1), false));
  EXPECT_NE(site_instance_a1.get(), site_instance_b1.get());
  EXPECT_TRUE(site_instance_a1->IsRelatedSiteInstance(site_instance_b1.get()));

  // Getting the new SiteInstance from the BrowsingInstance and from another
  // SiteInstance in the BrowsingInstance should give the same result.
  EXPECT_EQ(site_instance_b1.get(),
            site_instance_a1->GetRelatedSiteInstance(url_b1


atch_size, embed_dim], src_len 表示源序列的长度
        :param attn_mask: # [tgt_len,src_len] or [num_heads*batch_size,tgt_len, src_len]
                一般只在解码时使用，为了并行一次喂入所有解码部分的输入，所以要用mask来进行掩盖当前时刻之后的位置信息
        :param key_padding_mask: [batch_size, src_len], src_len 表示源序列的长度
        :return:
        attn_output: [tgt_len, batch_size, embed_dim]
        attn_output_weights: # [batch_size, tgt_len, src_len]
        """
        return multi_head_attention_forward(query, key, value, self.num_heads,
                                            self.dropout,
                                            out_proj=self.out_proj,
                                            training=self.training,
                                            key_padding_mask=key_padding_mask,
                                            q_proj=self.q_proj,
                                            k_proj=self.k_proj,
                                            v_proj=self.v_proj,
                                            attn_mask=attn_mask)

def multi_head_attention_forward(query,  # [tgt_len,batch_size, embed_dim]
                                 key,  # [src_len, batch_size, embed_dim]
                                 value,  # [src_len, batch_size, embed_dim]
                                 num_heads,
                                 dropout_p,
                                 out_proj,  # [embed_dim = vdim * num_heads, embed_dim = vdim * num_heads]
                                 training=True,
                                 key_padding_mask=None,  # [batch_size,src_len/tgt_len]
                                 q_proj=None,  # [embed_dim,kdim * num_heads]
                                 k_proj=None,  # [embed_dim, kdim * num_heads]
                                 v_proj=None,  # [embed_dim, vdim * num_heads]
                                 attn_mask=None,  # [tgt_len,src_len] or [num_heads*batch_size,tgt_len, src_len]
                                 ):
    q = q_proj(query)
    #  [tgt_len, batch_size, embed_dim] x [embed_dim, kdim * num_heads] = [tgt_len,batch_size,kdim * num_heads]

    k = k_proj(key)
    # [src_len, batch_size, embed_dim] x [embed_dim, kdim * num_heads] = [src_len, batch_size, kdim * num_heads]

    v = v_proj(value)
    # [src_len, batch_size, embed_dim] x [embed_dim, vdim * num_heads] = [src_len, batch_size, vdim * num_heads]
    if is_print_shape:
        print("" + "=" * 80)
        print("进入多头注意力计算:")
        print(
            f"\t 多头num_heads = {num_heads}, d_model={query.size(-1)}, d_k = d_v = d_model/num_heads={query.size(-1) // num_heads}")
        print(f"\t query的shape([tgt_len, batch_size, embed_dim]):{query.shape}")
        print(f"\t  W_q 的shape([embed_dim,kdim * num_heads]):{q_proj.weight.shape}")
        print(f"\t   Q  的shape([tgt_len, batch_size,kdim * num_heads]):{q.shape}")
        print("\t" + "-" * 70)

        print(f"\t  key 的shape([src_len,batch_size, embed_dim]):{key.shape}")
        print(f"\t  W_k 的shape([embed_dim,kdim * num_heads]):{k_proj.weight.shape}")
        print(f"\t   K  的shape([src_len,batch_size,kdim * num_heads]):{k.shape}")
        print("\t" + "-" * 70)

        print(f"\t value的shape([src_len,batch_size, embed_dim]):{value.shape}")
        print(f"\t  W_v 的shape([embed_dim,vdim * num_heads]):{v_proj.weight.shape}")
        print(f"\t   V  的shape([src_len,batch_size,vdim * num_heads]):{v.shape}")
        print("\t" + "-" * 70)
        print(
            "\t ***** 注意，这里的W_q, W_k, W_v是多个head同时进行计算的. 因此，Q,K,V分别也是包含了多个head的q,k,v堆叠起来的结果 *****")

    tgt_len, bsz, embed_dim = query.size()  # [tgt_len,batch_size, embed_dim]
    src_len = key.size(0)
    head_dim = embed_dim // num_heads  # num_heads * head_dim = embed_dim
    scaling = float(head_dim) ** -0.5
    q = q * scaling  # [query_len,batch_size,kdim * num_heads]

    if attn_mask is not None:  # [tgt_len,src_len] or [num_heads*batch_size,tgt_len, src_len]
        if attn_mask.dim() == 2:
            attn_mask = attn_mask.unsqueeze(0)  # [1, tgt_len,src_len]
            if list(attn_mask.size()) != [1, query.size(0), key.size(0)]:
                raise RuntimeError('The size of the 2D attn_mask is not correct.')
        elif attn_mask.dim() == 3:
            if list(attn_mask.size()) != [bsz * num_heads, query.size(0), key.size(0)]:
                raise RuntimeError('The size of the 3D attn_mask is not correct.')
        # 现在 atten_mask 的维度就变成了3D

    q = q.contiguous().view(tgt_len, bsz * num_heads, head_dim).transpose


agger-ui input[type=file],.swagger-ui input[type=password],.swagger-ui input[type=search],.swagger-ui input[type=text],.swagger-ui textarea{background:#fff;border:1px solid #d9d9d9;border-radius:4px;margin:5px 0;min-width:100px;padding:8px 10px}.swagger-ui input[type=email].invalid,.swagger-ui input[type=file].invalid,.swagger-ui input[type=password].invalid,.swagger-ui input[type=search].invalid,.swagger-ui input[type=text].invalid,.swagger-ui textarea.invalid{animation:shake .4s 1;background:#feebeb;border-color:#f93e3e}.swagger-ui input[disabled],.swagger-ui select[disabled],.swagger-ui textarea[disabled]{background-color:#fafafa;color:#888;cursor:not-allowed}.swagger-ui select[disabled]{border-color:#888}.swagger-ui textarea[disabled]{background-color:#41444e;color:#fff}@keyframes shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-4px,0,0)}40%,60%{transform:translate3d(4px,0,0)}}.swagger-ui textarea{background:hsla(0,0%,100%,.8);border:none;border-radius:4px;color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;min-height:280px;outline:none;padding:10px;width:100%}.swagger-ui textarea:focus{border:2px solid #61affe}.swagger-ui textarea.curl{background:#41444e;border-radius:4px;color:#fff;font-family:monospace;font-size:12px;font-weight:600;margin:0;min-height:100px;padding:10px;resize:none}.swagger-ui .checkbox{color:#303030;padding:5px 0 10px;transition:opacity .5s}.swagger-ui .checkbox label{display:flex}.swagger-ui .checkbox p{font-weight:400!important;margin:0!important}.swagger-ui .checkbox p{color:#3b4151;font-family:monospace;font-style:italic;font-weight:600}.swagger-ui .checkbox input[type=checkbox]{display:none}.swagger-ui .checkbox input[type=checkbox]+label>.item{background:#e8e8e8;border-radius:1px;box-shadow:0 0 0 2px #e8e8e8;cursor:pointer;display:inline-block;flex:none;height:16px;margin:0 8px 0 0;padding:5px;position:relative;top:3px;width:16px}.swagger-ui .checkbox input[type=checkbox]+label>.item:active{transform:scale(.9)}.swagger-ui .checkbox input[type=checkbox]:checked+label>.item{background:#e8e8e8 url("data:image/svg+xml;charset=utf-8,<svg width=\"10\" height=\"8\" viewBox=\"3 7 10 8\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"%2341474E\" fill-rule=\"evenodd\" d=\"M6.333 15 3 11.667l1.333-1.334 2 2L11.667 7 13 8.333z\"/></svg>") 50% no-repeat}.swagger-ui .dialog-ux{bottom:0;left:0;position:fixed;right:0;top:


import pandas as pd
import re
from pydriller import Repository

# Local repo
assignment_repo = r"E:\ds4se_assignment1\ds4se\hadoop"

df = pd.read_excel('hdfs_id.xlsx')

# Reading Issue IDs from a column named 'Key'
issue_ids = df['Key'].tolist()
print(issue_ids)

# Dicts to hold the results
issue_commits = {}
parent_commits = {}

# Mine the local repository
for commit in Repository(assignment_repo).traverse_commits():
    for issue_id in issue_ids:
        # Check if the issue ID is in the commit message using regex
        if re.search(r'\b' + issue_id + r'\b', commit.msg):
            # Store the commit hash of issues and it's Parent
            issue_commits[issue_id] = commit.hash, commit.committer_date
            parent_commits[commit.hash] = [parent for parent in commit.parents], commit.committer_date

print(issue_commits)
print(parent_commits)

# Dicts to DF and saving in CSV
pd.DataFrame(list(issue_commits.items()), columns=['Issue_ID', 'Commit']).to_csv('issue_commits.csv', index=False)
pd.DataFrame(list(parent_commits.items()), columns=['Commit', 'Parents']).to_csv('parent_commits.csv', index=False)

# Dicts to DF and saving in Sorted CSV
issue_commits_df = pd.DataFrame(list(issue_commits.items()), columns=['Issue_ID', 'Commit'])
issue_commits_df[['Commit_hash', 'Date']] = pd.DataFrame(issue_commits_df['Commit'].tolist(), index=issue_commits_df.index)
issue_commits_df = issue_commits_df.sort_values(by='Date', ascending=False)
issue_commits_df.to_csv('sorted_issue_commits.csv', index=False)

parent_commits_df = pd.DataFrame(list(parent_commits.items()), columns=['Commit', 'Parents'])
parent_commits_df[['Parents', 'Date']] = pd.DataFrame(parent_commits_df['Parents'].tolist(), index=parent_commits_df.index)
parent_commits_df = parent_commits_df.sort_values(by='Date', ascending=False)
parent_commits_df.to_csv('sorted_parent_commits.csv', index=False)


// src/engine/editor.h:758:0

link_internal counted_string
ToStringPrefixless(world_edit_selection_mode Type)
{
  counted_string Result = {};
  switch (Type)
  {
        case SelectionMode_Noop: { Result = CSz("Noop"); } break;
    case SelectionMode_ResizeSingleLinearAxis: { Result = CSz("ResizeSingleLinearAxis"); } break;
    case SelectionMode_ResizeBothLinearAxies: { Result = CSz("ResizeBothLinearAxies"); } break;
    case SelectionMode_ResizeAllAxies: { Result = CSz("ResizeAllAxies"); } break;
    case SelectionMode_TranslateLinear: { Result = CSz("TranslateLinear"); } break;
    case SelectionMode_TranslatePlanar: { Result = CSz("TranslatePlanar"); } break;

  }
  /* if (Result.Start == 0) { Info("Could not convert value(%d) to (EnumType.name)", Type); } */
  return Result;
}

link_internal counted_string
ToString(world_edit_selection_mode Type)
{
  counted_string Result = {};
  switch (Type)
  {
        case SelectionMode_Noop: { Result = CSz("SelectionMode_Noop"); } break;
    case SelectionMode_ResizeSingleLinearAxis: { Result = CSz("SelectionMode_ResizeSingleLinearAxis"); } break;
    case SelectionMode_ResizeBothLinearAxies: { Result = CSz("SelectionMode_ResizeBothLinearAxies"); } break;
    case SelectionMode_ResizeAllAxies: { Result = CSz("SelectionMode_ResizeAllAxies"); } break;
    case SelectionMode_TranslateLinear: { Result = CSz("SelectionMode_TranslateLinear"); } break;
    case SelectionMode_TranslatePlanar: { Result = CSz("SelectionMode_TranslatePlanar"); } break;

  }
  /* if (Result.Start == 0) { Info("Could not convert value(%d) to (EnumType.name)", Type); } */
  return Result;
}

link_internal world_edit_selection_mode
WorldEditSelectionMode(counted_string S)
{
  world_edit_selection_mode Result = {};

    if (StringsMatch(S, CSz("SelectionMode_Noop"))) { return SelectionMode_Noop; }
  if (StringsMatch(S, CSz("SelectionMode_ResizeSingleLinearAxis"))) { return SelectionMode_ResizeSingleLinearAxis; }
  if (StringsMatch(S, CSz("SelectionMode_ResizeBothLinearAxies"))) { return SelectionMode_ResizeBothLinearAxies; }
  if (StringsMatch(S, CSz("SelectionMode_ResizeAllAxies"))) { return SelectionMode_ResizeAllAxies; }
  if (StringsMatch(S, CSz("SelectionMode_TranslateLinear"))) { return SelectionMode_TranslateLinear; }
  if (StringsMatch(S, CSz("SelectionMode_TranslatePlanar"))) { return SelectionMode_TranslatePlanar; }

  return Result;
}


mut cx: FunctionContext) -> JsResult<JsValue> {
    let string_script = cx.argument::<JsString>(0)?;
    eval(&mut cx, string_script)
}
use std::borrow::Cow;
use std::convert::TryInto;
use std::io::{self, Cursor, Write};
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};

use byteorder::{NetworkEndian, ReadBytesExt, WriteBytesExt};

use super::common::*;

#[derive(PartialEq, Eq, Debug, Copy, Clone)]
pub struct TorrentScrapeStatistics {
    pub seeders: NumberOfPeers,
    pub completed: NumberOfDownloads,
    pub leechers: NumberOfPeers,
}

#[derive(PartialEq, Eq, Clone, Debug)]
pub struct ConnectResponse {
    pub connection_id: ConnectionId,
    pub transaction_id: TransactionId,
}

#[derive(PartialEq, Eq, Clone, Debug)]
pub struct AnnounceResponse {
    pub transaction_id: TransactionId,
    pub announce_interval: AnnounceInterval,
    pub leechers: NumberOfPeers,
    pub seeders: NumberOfPeers,
    pub peers: Vec<ResponsePeer>,
}

#[derive(PartialEq, Eq, Clone, Debug)]
pub struct ScrapeResponse {
    pub transaction_id: TransactionId,
    pub torrent_stats: Vec<TorrentScrapeStatistics>,
}

#[derive(PartialEq, Eq, Clone, Debug)]
pub struct ErrorResponse {
    pub transaction_id: TransactionId,
    pub message: Cow<'static, str>,
}

#[derive(PartialEq, Eq, Clone, Debug)]
pub enum Response {
    Connect(ConnectResponse),
    Announce(AnnounceResponse),
    Scrape(ScrapeResponse),
    Error(ErrorResponse),
}

impl From<ConnectResponse> for Response {
    fn from(r: ConnectResponse) -> Self {
        Self::Connect(r)
    }
}

impl From<AnnounceResponse> for Response {
    fn from(r: AnnounceResponse) -> Self {
        Self::Announce(r)
    }
}

impl From<ScrapeResponse> for Response {
    fn from(r: ScrapeResponse) -> Self {
        Self::Scrape(r)
    }
}

impl From<ErrorResponse> for Response {
    fn from(r: ErrorResponse) -> Self {
        Self::Error(r)
    }
}

impl Response {
    /// Returning IPv6 peers doesn't really work with UDP. It is not supported
    /// by https://libtorrent.org/udp_tracker_protocol.html. There is a
    /// suggestion in https://web.archive.org/web/20170503181830/http://opentracker.blog.h3q.com/2007/12/28/the-ipv6-situation/
    /// of using action number 4 and returning IPv6 octets just like for IPv4
    /// addresses. Clients seem not to support it very well, but due to a lack
    /// of alternative solutions, it is implemented here.
    #[inline]
    pub fn write(self, bytes: &mut impl Write, ip_version: IpVersion) -> Result<(), io::Error> {
        match self {
            Response::Connect(r) => {
                bytes.write_i32::<NetworkEndian>(0)?;
                bytes.write_i32::<NetworkEndian>(r.transaction_id.0)?;
                bytes.write_i64::<NetworkEndian>(r.connection_id.0)?;
            }
            Response::Announce(r) => {
                if ip_version == IpVersion::IPv4 {
                    bytes.write_i32::<NetworkEndian>(1)?;
                    bytes.write_i32::<NetworkEndian>(r.transaction_id.0)?;
                    bytes.write_i32::<NetworkEndian>(r.announce_interval.0)?;
                    bytes.write_i32::<NetworkEndian>(r.leechers.0)?;
                    bytes.write_i32::<NetworkEndian>(r.seeders.0)?;

                    // Silently ignore peers with wrong IP version
                    for peer in r.peers {
                        if let IpAddr::V4(ip) = peer.ip_address {
                            bytes.write_all(&ip.octets())?;


( INDEX iPlayer=0; iPlayer<4; iPlayer++)
      {
        // if this player exist
        if( gm_lpLocalPlayers[ iPlayer].lp_pplsPlayerSource != NULL)
        {
          // publish player index to console
          ctl_iCurrentPlayerLocal = iPlayer;
          ctl_iCurrentPlayer = gm_lpLocalPlayers[ iPlayer].lp_pplsPlayerSource->pls_Index;

          // copy its local controls to current controls
          memcpy(
            ctl_pvPlayerControls,
            gm_lpLocalPlayers[ iPlayer].lp_ubPlayerControlsState,
            ctl_slPlayerControlsSize);

          // create action for it for this tick
          CPlayerAction paAction;
          INDEX iCurrentPlayer = gm_lpLocalPlayers[ iPlayer].lp_iPlayer;
          CControls &ctrls = gm_actrlControls[ iCurrentPlayer];
          ctrls.CreateAction(gm_apcPlayers[iCurrentPlayer], paAction, FALSE);
          // set the action in the client source object
          gm_lpLocalPlayers[ iPlayer].lp_pplsPlayerSource->SetAction(paAction);

          // copy the local controls back
          memcpy(
            gm_lpLocalPlayers[ iPlayer].lp_ubPlayerControlsState,
            ctl_pvPlayerControls,
            ctl_slPlayerControlsSize);
        }
      }
      // clear player indices
      ctl_iCurrentPlayerLocal = -1;
      ctl_iCurrentPlayer = -1;
    }
    // execute all button-action shell commands for common controls
    if (gm_bGameOn) {
      _ctrlCommonControls.DoButtonActions();
    }
  }
  // if DirectInput is disabled, and game is currently active
  else if (gm_bGameOn)
  {
    // for all possible local players
    for( INDEX iPlayer=0; iPlayer<4; iPlayer++)
    { // if this player exist
      if( gm_lpLocalPlayers[iPlayer].lp_pplsPlayerSource != NULL)
      {
        CPlayerSource &pls = *gm_lpLocalPlayers[iPlayer].lp_pplsPlayerSource;
        // create dummy action for the player for this tick
        CPlayerAction paClearAction;
        // clear actions
        paClearAction = pls.pls_paAction;
        paClearAction.pa_vTranslation  = FLOAT3D(0.0f,0.0f,0.0f);
//        paClearAction.pa_aRotation     = ANGLE3D(0,0,0);
//        paClearAction.pa_aViewRotation = ANGLE3D(0,0,0);
        paClearAction.pa_ulButtons     = 0;

        // clear the action in the client source object
        pls.SetAction(paClearAction);
      }
    }
  }
}

/*
 * Global game object (in our case Flesh) initialization function
 */
void CGame::InitInternal( void)
{
  gam_strCustomLevel = ""; // filename of custom level chosen
  gam_strSessionName = TRANS("Unnamed session"); // name of multiplayer network session
  gam_strJoinAddress = TRANS("serveraddress");   // join address

  gm_MenuSplitScreenCfg    = SSC_PLAY1;
  gm_StartSplitScreenCfg   = SSC_PLAY1;
  gm_CurrentSplitScreenCfg = SSC_PLAY1;
  gm_iLastSetHighScore = 0;
  gm_iSinglePlayer = 0;
  gm_iWEDSinglePlayer = 0;
  gm_bGameOn = FALSE;
  gm_bMenuOn = FALSE;
  gm_bFirstLoading =


"assistant", "name": null, "metadata": {}}, "create_time": 1719410992.503467, "update_time": null, "content": {"content_type": "text", "parts": [""]}, "status": "finished_successfully", "end_turn": null, "weight": 1.0, "metadata": {"message_type": null, "model_slug": "gpt-4o", "default_model_slug": "auto", "parent_id": "aaa2227b-6d9d-4bcc-b729-fdfb5d8896b2", "request_id": "899dc573bcf10d7a-MRS", "timestamp_": "absolute"}, "recipient": "all", "channel": null}, "parent": "aaa2227b-6d9d-4bcc-b729-fdfb5d8896b2", "children": ["09b3faaf-73b6-4ed1-ab75-d5655bb87a8f"]}, "09b3faaf-73b6-4ed1-ab75-d5655bb87a8f": {"id": "09b3faaf-73b6-4ed1-ab75-d5655bb87a8f", "message": {"id": "09b3faaf-73b6-4ed1-ab75-d5655bb87a8f", "author": {"role": "assistant", "name": null, "metadata": {}}, "create_time": 1719410992.503618, "update_time": null, "content": {"content_type": "text", "parts": ["To set up your bot's name with BotFather, follow these steps in the correct order:\n\n1. **Create a New Bot:**\n   - Start a chat with `@BotFather` in the Telegram app.\n   - Use the command `/newbot` to create a new bot.\n   - Follow the prompts to set a name and username for your bot.\n   - Once the bot is created, BotFather will give you a token.\n\n2. **Set the Bot Name:**\n   - If you want to change the bot's name later, you can use the `/setname` command.\n\nLet's walk through the exact process:\n\n### Creating a New Bot\n\n1. **Open Chat with BotFather:**\n   - In Telegram, search for `@BotFather` and start a chat.\n\n2. **Create New Bot:**\n   - Type `/newbot` and press Enter.\n   - BotFather will ask for a name for your bot (e.g., "hackhubafrica").\n   - Then, BotFather will ask for a username for your bot. The username must end with "bot" (e.g., "hackhubafrica_bot").\n\n3. **Receive the Token:**\n   - After setting the name and username, BotFather will provide you with a token. Keep this token safe as you will need it for your Python script.\n\n### Changing the Bot Name\n\nIf you already have a bot and want to change its name:\n\n1. **Use the /setname Command:**\n   - Type `/setname` and press Enter.\n   - BotFather will prompt you to select the bot you want to rename.\n   - Follow the prompts to change the bot's name.\n\nHere's an example of the interaction:\n\n```plaintext\nYou: /newbot\nBotFather: Alright, a new bot. How are we going to call it? Please choose a name for your bot.\nYou: hackhubafrica\nBotFather: Good. Now let's choose a username for your bot. It must end in 'bot'. Like this, for example: TetrisBot or tetris_bot.\nYou: hackhubafrica_bot\nBotFather: Done! Congratulations on your new bot. You will find it at t.me/hackhubafrica_bot. You can now add a desc


s("UnknownClass"),
                selectClasspathRoots(setOf(Path.of("./src/test/kotlin/com/chutneytesting/kotlin/junit/engine")))[0],
                selectClasspathResource("unknownResource"),
                selectMethod("com.chutneytesting.kotlin.junit.engine.ChutneyTest#unknownMethod()")
            )
        }

        @JvmStatic
        fun containerChutneyTestSelectors(): Array<Any> {
            return arrayOf(
                arrayOf(selectClass("com.chutneytesting.kotlin.junit.engine.ChutneyTest"), 46, 46, 75),
                arrayOf(selectClasspathRoots(setOf(Path.of(".")))[0], 49, 49, 77),
                arrayOf(
                    selectClasspathResource("com/chutneytesting/kotlin/junit/engine/ChutneyTest.class"), 46, 46, 75
                ),
                arrayOf(selectMethod("com.chutneytesting.kotlin.junit.engine.ChutneyTest#withSubSteps()"), 12, 12, 10)
            )
        }
    }

    @Test
    fun should_get_engineId() {
        assertThat(sut.id).isEqualTo(CHUTNEY_JUNIT_ENGINE_ID)
    }

    @Test
    fun should_get_groupId() {
        assertThat(sut.groupId).hasValue("com.chutneytesting")
    }

    @Test
    fun should_get_artifactId() {
        assertThat(sut.artifactId).hasValue("chutney-kotlin-dsl")
    }

    @ParameterizedTest
    @MethodSource("emptySelectors")
    fun should_do_nothing_when_select_nothing(selector: DiscoverySelector) {
        val result: EngineExecutionResults = EngineTestKit.engine(CHUTNEY_JUNIT_ENGINE_ID)
            .selectors(selector)
            .execute()

        result
            .allEvents()
            //.debug(System.out)
            .assertStatistics { stats: EventStatistics ->
                stats.started(1).finished(1).succeeded(1)
            }
    }

    @ParameterizedTest
    @MethodSource("containerChutneyTestSelectors")
    fun should_execute_scenario_when_select_containerChutneyTest(selector: DiscoverySelector, startedEvent: Long, finishedEvent: Long, expectedReportingEntryPublished: Long) {
        val result: EngineExecutionResults = EngineTestKit.engine(CHUTNEY_JUNIT_ENGINE_ID)
            .selectors(selector)
            .execute()

        result
            .allEvents()
            //.debug(System.out)
            .assertStatistics { stats: EventStatistics ->
                stats
                    .started(startedEvent)
                    .finished(finishedEvent)
                    .succeeded(finishedEvent)
                    .reportingEntryPublished(expectedReportingEntryPublished)
            }
    }

    @Test
    fun should_filter_on_method_name() {
        val filter = MyPostDiscoveryFilter()
        val filterMock = Mockito.spy(filter)
        val discoveryRequest = LauncherDiscoveryRequestBuilder.request()
            .selectors(
                selectClasspathRoots(Collections.singleton(Path.of("/com/chutneytesting/kotlin/junit/engine"))),
            )
            .filters(
                filterMock
            )
            .build()

        val testEngine = ChutneyTestEngine()

        testEngine.discover(discoveryRequest, UniqueId.forEngine(testEngine.id))

        Mockito.verify(filterMock, times(10)).apply(any())
    }

    open class MyPostDiscoveryFilter : PostDiscoveryFilter {
        override fun apply(`object`: TestDescriptor?): FilterResult {
            return FilterResult.includedIf(true)
        }
    }
}
/*
 * SPDX-FileCopyrightText: 2017-2024 Enedis
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 */

package com.chutneytesting.


}
import { Injectable } from '@angular/core';

import { Taco } from '../models/taco';

@Injectable()
export class TacoService {
  TACOS: Taco[] = [];
  getTacoCost(): number {
    let total = 0;
    for(let taco of this.TACOS) {
      total += taco.cost * taco.quantity;
    }
    return total;
  }
  getTacos(): Taco[] {
    return this.TACOS;
  }
  addTaco(newTaco: Taco): string {
    this.TACOS.push(newTaco);
    return "Taco added to cart";
  }
  removeTaco(index: number): string {
    if(index < this.TACOS.length) {
      this.TACOS.splice(index, 1);
      return "Taco successfully removed.";
    }
    return "There was an error removing that taco.";
  }
  getTaco(index: number): Taco {
    return this.TACOS[index];
  }
  updateTaco(newTaco: Taco, index: number) {
    this.TACOS[index] = newTaco;
  }
  removeAllTacos() {
    this.TACOS = [];
  }
}import { Direction, MarsRover, Point, State } from "./rover";

type TestCase = [State, string, string];
type SecondTestCase = [State, string, State, Point[]];

describe("Mars Rover", () => {
  it("should initialize mars rover", () => {
    const rover = new MarsRover(4, 2, Direction.EAST);
    expect(rover).toBeTruthy();
    expect(rover.state.x).toBe(4);
    expect(rover.state.y).toBe(2);
    expect(rover.state.direction).toBe("EAST");
  });

  it("should throw an invalid command error", () => {
    const rover = new MarsRover(4, 2, Direction.EAST);
    expect(() => rover.Move("FGFFFRLB")).toThrow(Error);
  });

  it("should move the rover and return coordinates", () => {

    const testCases: TestCase[] = [
      [{ x: 4, y: 2, direction: Direction.EAST }, "FLFFFRFLB", "(6,4) NORTH"],
      [{ x: 6, y: 4, direction: Direction.NORTH }, "FBBLFFLLRF", "(4,2) SOUTH"],
      [{ x: 5, y: 6, direction: Direction.SOUTH }, "BBBRFFLLBFF", "(4,3) EAST"],
      [{ x: 6, y: 4, direction: Direction.NORTH }, "FFFLLFFRRRRBB", "(6,3) SOUTH"],
      [{ x: 6, y: 4, direction: Direction.NORTH }, "LFFFRFLR", "(3,5) NORTH"],
    ];

    for (let i = 0; i < testCases.length; i++) {
      const [initalState, commands, expectedState]: TestCase = testCases[i];
      const newRover = new MarsRover(
        initalState.x,
        initalState.y,
        initalState.direction
      );
      expect(newRover.Move(commands)).toBe(expectedState);
    }
  });

  it("should return the previous state when  obstacle hit", () => {
    const testCases: SecondTestCase[] = [
      [{ x: 0, y: 3, direction: Direction.EAST }, "FLF", {x:1, y:3, direction: Direction.NORTH}, [[1,4]]],
    ];

    for (let i = 0; i < testCases.length; i++) {
      const [
        initalState,
        commands,
        finalState,
        obstacle,
      ]: SecondTestCase = testCases[i];
      const newRover = new MarsRover(
        initalState.x,
        initalState.y,
        initalState.direction,
        obstacle
      );
      expect(


getContainer()
        {
            return this.container;
        }
    }
}
import axios from "axios";
import { message } from "ant-design-vue"
import { getToken } from "./cookies";
axios.defaults.headers = {
  "Content-Type": "application/json;charset=utf8"
};

axios.defaults.baseURL = process.env.VUE_APP_BASE_API
  ? process.env.VUE_APP_BASE_API
  : "";

axios.interceptors.request.use(
  config => {
    let token = getToken()
    if (token) {
      config.headers["X-Access-Token"] = token;
    }
    return config;
  },
  error => {
    Promise.reject(error);
  }
);

axios.interceptors.response.use(
  response => {
    const res = response.data;
    if (res.code !== 200){
        message.error(res.message || "Error")
        return Promise.reject(new Error(res.message || "Error"));
    } else {
      return response;
    }
  },
  error => {
    message.error(error.message || "Error")
    return Promise.reject(error);
  }
);

export function formateURLOnlyGet(link: string, json: object) {
  let url = link;
  var data = Object.entries(json);
  if (data.length) {
    url += url.indexOf("?") == -1 ? "?" : "";
    url += Object.entries(data)
      .map(item => {
        return item[1].join("=");
      })
      .join("&");
  }
  return url;
}

/**
 * GET请求方法
 * @param {String} url 请求地址
 * @param {json} json 请求参数
 */
export function getData(url: string, json: object) {
  return axios
    .get(formateURLOnlyGet(url, json))
    .then(res => res.data)
    .catch(error => error.response);
}

export function postData(url: string, json?: object) {
  return axios
    .post(url, json)
    .then(res => res.data)
    .catch(error => error.response);
}declare interface TabV2Options {
	navSelector?: string;
	contentSelector?: string;
	initial?: string;
	callback?: Function;
}

/**
 * A helper class for creating tabbed containers.
 * Create one Tabs instance per tabbed navigation container in your application.
 *
 * @example
 *
 *
 *  Tab 1

 *  Tab 2

 *
 *
 *
Content 1

 *
Content 2

 *
 * @example
 * // JavaScript Listener
 * let nav = $('.tabs[data-group="group1"]');
 * new Tabs(nav, {
 *   initial: "tab1",
 *   callback: t => console.log("Tab ${t} was clicked")
 * });
 *
 * @param tabs {HTMLElement|JQuery} An HTML element or JQuery object representing the tab navigation container.
 * @deprecated in 0.5.2 will be removed in 0.6.2
 */
declare class Tabs {
	/** The collection of tabs */
	tabs: JQuery;

	/** The callback function to trigger when a Tab is activated */
	callback: Function;

	/** The container element within which both the tab navigation and the tab content exists */
	container: JQuery | HTMLElement;

	/** The currently active tab */
	active: JQuery;

	constructor(
		tabs: JQuery | HTMLElement,
		{
			initial,
			callback,
			container,
		}: {
			initial: string;
			callback: (tab: JQuery) => void;
			container?: JQuery | HTMLElement;
		}
	);

	/**
	 * The named tab


* @return Type 站点接入类型。该参数取值如下，不填写时默认为 partial：

partial：CNAME 接入；

full：NS 接入；

noDomainAccess：无域名接入；

dnsPodAccess：DNSPod 托管接入，该接入模式要求您的域名已托管在 DNSPod 内。

     */
    public String getType() {
        return this.Type;
    }

    /**
     * Set 站点接入类型。该参数取值如下，不填写时默认为 partial：

partial：CNAME 接入；

full：NS 接入；

noDomainAccess：无域名接入；

dnsPodAccess：DNSPod 托管接入，该接入模式要求您的域名已托管在 DNSPod 内。

     * @param Type 站点接入类型。该参数取值如下，不填写时默认为 partial：

partial：CNAME 接入；

full：NS 接入；

noDomainAccess：无域名接入；

dnsPodAccess：DNSPod 托管接入，该接入模式要求您的域名已托管在 DNSPod 内。

     */
    public void setType(String Type) {
        this.Type = Type;
    }

    /**
     * Get 站点名称。CNAME/NS 接入的时，请传入二级域名（example.com）作为站点名称；无域名接入时，该值请保留为空。
     * @return ZoneName 站点名称。CNAME/NS 接入的时，请传入二级域名（example.com）作为站点名称；无域名接入时，该值请保留为空。
     */
    public String getZoneName() {
        return this.ZoneName;
    }

    /**
     * Set 站点名称。CNAME/NS 接入的时，请传入二级域名（example.com）作为站点名称；无域名接入时，该值请保留为空。
     * @param ZoneName 站点名称。CNAME/NS 接入的时，请传入二级域名（example.com）作为站点名称；无域名接入时，该值请保留为空。
     */
    public void setZoneName(String ZoneName) {
        this.ZoneName = ZoneName;
    }

    /**
     * Get Type 取值为 partial/full 时，七层域名的加速区域。以下为该参数取值，不填写时该值默认为 overseas。Type 取值为 noDomainAccess 时该值请保留为空：

 global: 全球可用区；

 mainland: 中国大陆可用区；

 overseas: 全球可用区（不含中国大陆）。

     * @return Area Type 取值为 partial/full 时，七层域名的加速区域。以下为该参数取值，不填写时该值默认为 overseas。Type 取值为 noDomainAccess 时该值请保留为空


tte    ;und anzeigen

                moveq   #0,D0           ;ok-Flag
                rts

bmhdchunk:      movea.l scr2,A6         ;Hier steht der Chunk
                cmpi.w  #320,(A6)
                bne.s   wrong_iff
                cmpi.w  #200,2(A6)
                bne.s   wrong_iff
                move.b  10(A6),compress ;Compress-Flag
                moveq   #0,D0           ;ok
                rts
wrong_iff:      moveq   #-1,D0          ;nicht 320x200
                rts

bodychunk:      move.b  #1,just_palette ;Es kam auch Grafik
                cmpi.b  #1,compress     ;gepacktes IFF?
                beq.s   entpack_pkd     ;ja, entpacken

                movea.l scr2,A0         ;Quelldaten
                movea.l scr1,A1         ;Zielscreen
                move.w  #199,D7         ;Zeilenzhler
nxt_scanline:   moveq   #3,D6           ;Plane-Zhler
nxt_plane:      moveq   #19,D5          ;Word-Zhler
nxt_long:       move.w  (A0)+,(A1)      ;40 Bytes bertragen
                addq.l  #8,A1
                dbra    D5,nxt_long
                lea     -158(A1),A1     ;zurcksetzen
                dbra    D6,nxt_plane
                lea     152(A1),A1      ;vorsetzen auf nchste Zeile
                dbra    D7,nxt_scanline

                moveq   #0,D0           ;Alles Okay
                rts

entpack_pkd:    movea.l scr2,A0         ;Quelldaten
                movea.l scr1,A1         ;Ziel
                bsr     entpack_pic
                moveq   #0,D0           ;ok
                rts

rasterchunk:    move.l  4(A6),D6        ;Lnge des Chunks
                lsr.w   #2,D6
                subq.w  #1,D6
                movea.l scr2,A6
                lea     hbl_system,A1
copy_t:         move.l  (A6)+,(A1)+
                dbra    D6,copy_t
                tst.w   ste_machine
                bne.s   no_con4
                tst.w   ste_support
                beq.s   no_con4
                lea     hbl_system+2,A0
                jsr     convert_rasters ;Alle STE -> ST
no_con4:        clr.w   rst_akt         ;Jetzt ist Raster #0 aktiv
                bsr     palette_changed ;und ins Board
                tst.w   blitter_an
                bne.s   no_blit
                bsr     blitter_off
no_blit:        moveq   #0,D0
                rts

iff_load_part_2:clr.w   -(SP)           ;Relativ zum Dateistart
                move.w  fhandle,-(SP)
                clr.l   -(SP)           ;An Dateistart gehen
                move.w  #$0042,-(SP)
                trap    #1
                lea     10(SP),SP

                move.w  fhandle,D6      ;Filehandle bergeben
                movea.l scr1,A1         ;Zielbuffer
                bsr     load_iff_2
                tst.w   D0              ;Fehler aufgetreten?
                bmi     wrong_format    ;ja->Fehlermeldung

                bsr     palette_changed
                bra     ende_load

*******************
** IFF Loader    **
*******************
** Ldt Bilder mit bis zu 5 Planes
** und


");
		local wrap = false;
		GameTooltip_AddHighlightLine(GameTooltip, name, wrap);
		GameTooltip:Show();
	end

	EventRegistry:TriggerEvent("Professions.RecipeListOnEnter", self, elementData.data);
end

function ProfessionsRecipeListRecipeMixin:OnLeave()
	self:SetLabelFontColors(self:GetLabelColor());
	GameTooltip:Hide();
end

function ProfessionsRecipeListRecipeMixin:SetSelected(selected)
	self.SelectedOverlay:SetShown(selected);
	self.HighlightOverlay:SetShown(not selected);
end


0px;
                        }
                        QPushButton:checked {
                            background-color: #d9d9d9;
                        }
                        """,
                    )
        return super().changeEvent(event)

    def clear_widgets(self) -> None:
        """清空所有页面"""
        self.Widgets.clear()
        while self.sidebar.count():
            item = self.sidebar.takeAt(0)
            if item.widget():
                item.widget().deleteLater()
        self.sidebar.addItem(self.__sidebar_spacer)
        self.Total_Widgets = 0
        self.Top_Widgets = 0
        self.Bottom_Widgets = 0
        self.current_widget = 0


kehrt zu Baumriese im Rabenwald im Schergrat zurück."}},
[10831] = {"Wie man ein Mondstoffschneider wird",nil, {"Benutzt das magieerfüllte Netherstoffstück während Ihr im Mondbrunnen der Zuflucht des Cenarius steht, um eine Urmondstoffprobe herzustellen. Bringt die fertige Urmondstoffprobe zu Nasmara Mondweise im unteren Viertel von Shattrath.nnACHTUNG! Ihr könnt nur eine Schneidereispezialisierung auswählen."}},
[10832] = {"Wie man ein Zauberfeuerschneider wird",nil, {"Bringt eine Probe einer Nethergespenstessenz zu Gidge Spruchwirker im unteren Viertel von Shattrath.nnACHTUNG! Ihr könnt nur eine Schneidereispezialisierung auswählen."}},
[10833] = {"Wie man ein Schattenzwirnschneider wird",nil, {"Benutzt den Kristall der tiefen Schatten in der Nähe des Altars der Schatten, um Eure Verbindung zu dem Altar zu stärken. Kehrt danach zu Andrion Dunkelweber im unteren Viertel in Shattrath zurück.nnACHTUNG! Ihr könnt nur eine Schneidereispezialisierung auswählen."}},
[10834] = {"Grillok 'Finsterauge'",nil, {"Tötet Grillok Finsterauge und bringt Grilloks Augenklappe zu Zezzak im Rückenbrecherposten."}},
[10835] = {"Apotheker Antonivich",nil, {"Bringt Albrecks Befund zu Apotheker Antonivich in Thrallmar."}},
[10836] = {"Unterwanderung der Festung des Drachenmals",nil, {"Neltharaku, der hoch über den Netherschwingenfeldern im Schattenmondtal seine Kreise zieht, möchte, dass Ihr 15 Orcs des Drachenmals tötet.nnSämtliche Orcs des Drachenmals in der Festung des Drachenmals kommen dafür in Frage."}},
[10837] = {"Zur Netherschwingenscherbe!",nil, {"Neltharaku, der hoch über den Netherschwingenfeldern im Schattenmondtal seine Kreise zieht, möchte, dass Ihr 12 Netherrankenkristalle auf der Netherschwingenscherbe sammelt."}},
[10838] = {"Der dämonische Seher",nil, {"Benutzt den dämonischen Seher im Höllenfeuerbecken, wartet, bis er sich eingestellt hat und führt dann eine Messung durch.nnBringt den dämonischen Seher und die Messungen des dämonischen Sehers zu Apotheker Antonivich in Thrallmar."}},
[10839] = {"Dunkelstein des Skithverstecks",nil, {"Benutzt die Rute der Läuterung bei Terokks Dunkelstein im Skithversteck und kehrt danach zu Kirrik bei der Flüchtlingskarawane in der Knochenwüste zurück."}},
[10840] = {"Das Grab des Lichts",nil, {"Hohepriester Orglum möchte, dass Ihr zum Grab des Lichts reist und 10 astrale Nethermanten und 10 astrale Brandschatzer tötet. Kehrt danach zu ihm bei der Flüchtlingskarawane zurück."}},
[10841] = {"Der rachsüchtige Herold",nil, {"Aktiviert das Gerät."}},
[10842] = {"Der rachsüchtige Herold",nil, {"Hohepriester Orglum möchte, dass Ihr in das Grab des Lichts reist und das Grabrelikt der Draenei in der Nähe des uralten Draeneialtars b


using System.Text.Json.Serialization;

namespace Soenneker.Blazor.FilePond.Options;

/// <summary>
/// Represents additional options for adding a file to FilePond.
/// </summary>
public sealed class FilePondAddFileOptions
{
    /// <summary>
    /// Sets the index at which the file should be added.
    /// </summary>
    /// <remarks>
    /// The index determines the position of the added file in the list of files.
    /// If not specified, the file is added at the end of the list.
    /// </remarks>
    [JsonPropertyName("index")]
    public int? Index { get; set; }

    /// <summary>
    /// If enabled, does not trigger AddFile event after adding this particular file.
    /// </summary>
    [JsonIgnore]
    public bool SilentAdd { ge


OP) × [14.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
× 2329 × 0020 × 0009 ÷	#  × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [14.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
× 2329 × 0308 × 0009 ÷	#  × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
× 2329 × 0308 × 0020 × 0009 ÷	#  × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
× 2329 × 00B4 ÷	#  × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [14.0] ACUTE ACCENT (BB) ÷ [0.3]
× 2329 × 0020 × 00B4 ÷	#  × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [14.0] ACUTE ACCENT (BB) ÷ [0.3]
× 2329 × 0308 × 00B4 ÷	#  × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] ACUTE ACCENT (BB) ÷ [0.3]
× 2329 × 0308 × 0020 × 00B4 ÷	#  × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] ACUTE ACCENT (BB) ÷ [0.3]
× 2329 × 000B ÷	#  × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
× 2329 × 0020 × 000B ÷	#  × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
× 2329 × 0308 × 000B ÷	#  × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
× 2329 × 0308 × 0020 × 000B ÷	#  × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
× 2329 × FFFC ÷	#  × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [14.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
× 2329 × 0020 × FFFC ÷	#  × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [14.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
× 2329 × 0308 × FFFC ÷	#  × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) ×


 public title: string = "";
    public text: string = "";
    public priority: number = 1;
    public done: boolean = false;

    constructor(todo: Todo = null) {
        if (todo !== null) {
            this.id = todo.id;
            this.title = todo.title;
            this.text = todo.text;
            this.priority = todo.priority;
            this.done = todo.done;
        }
     }
}
import AWS from 'aws-sdk';
import { TRADING_QUEUE_NAME, SELLER_QUEUE_NAME } from '../../constants';
import { LambdaTraderMessage, SellerMessage } from '../../types';

const sqs = new AWS.SQS();
type SendMessageRequest = AWS.SQS.Types.SendMessageRequest;
const sendToQueue = async <T>(
  queueName: string,
  data: T,
  delaySec?: number
) => {
  const response = await sqs.getQueueUrl({ QueueName: queueName }).promise();
  const queueUrl = response.QueueUrl;
  if (queueUrl == null) throw Error(`Queue ${queueName} not found.`);
  const params: SendMessageRequest = {
    MessageBody: JSON.stringify(data),
    QueueUrl: queueUrl,
  };
  if (delaySec != null) params.DelaySeconds = delaySec;
  console.log(`Sending to queue ${queueName}`, params);
  await sqs.sendMessage(params).promise();
};

export const sendToTrader = (data: LambdaTraderMessage) =>
  sendToQueue(TRADING_QUEUE_NAME, data);

export const sendToSeller = (data: SellerMessage, delaySec?: number) =>
  sendToQueue(SELLER_QUEUE_NAME, data, delaySec);
const cache = {};

export function cachedFetch<T>(
  input: RequestInfo,
  init?: RequestInit
): Promise<T> {
  const key = input.toString();
  if (cache[key]) {
    return cache[key];
  } else {
    cache[key] = new Promise((s, f) => {
      fetch(input, init)
        .then((response) => {
          if (response.status >= 400) {
            f(
              new Error(`Strapi Server returned status code ${response.status}`)
            );
          }
          response.json().then(s).catch(f);
        })
        .catch(f);
    });
    return cache[key];
  }
}
import { assertEquals } from 'https://deno.land/std/testing/asserts.ts';

import { pipe } from './mod.ts';

Deno.test('pipe()', async () => {
    const fn = pipe(
        (a: number) => a + 1,
        async (a) => a * 3,
        (a) => a / 2,
    );

    const actual = await fn(1);
    const expected = 3;

    assertEquals(actual, expected);
});
import * as ko from "knockout";
import { Observable } from "knockout";
import template from './ProductDetails.html';

class ProductDetails {
  name: Observable<string> = ko.observable('Bananas')
    .extend({ required: true });

  productCode: Observable<string> = ko.observable()
    .extend({
      required: true,
      minLength: 5,
      pattern: {
        message: 'Please enter letters and digits only',
        params: /^[A-Za-z0-9]*$/
      }
    })

  stockCount: Observable<number> = ko.observable()
    .extend({
      min: 1,
      max: 100
    })
}

// The default export returns the component details object to register with KO
export default { viewModel: ProductDetails, template: template };
const { MongoClient, ObjectId } = require("mongodb");
const { deleteKeys } = require("./ui/utils");
const MD5 = require("./ui/md5");
const uri = process.env["mongodb_url"];
const opts = {
  useUnifiedTopology: true,
  useNewUrlParser: true,
};
const client = new MongoClient(uri, opts);
//TODO: