ATE_AUCTION_TITLE = nil;
TOKEN_BUYOUT_AUCTION_TITLE = nil;
TOKEN_CONFIRM_CREATE_AUCTION = nil;
TOKEN_CONFIRM_CREATE_AUCTION_LINE_2 = nil;
TOKEN_CONFIRM_GAME_TIME_DESCRIPTION = nil;
TOKEN_CONFIRM_GAME_TIME_DESCRIPTION_MINUTES = nil;
TOKEN_CONFIRM_GAME_TIME_EXPIRATION_CONFIRMATION_DESCRIPTION = nil;
TOKEN_CONFIRM_GAME_TIME_RENEWAL_CONFIRMATION_DESCRIPTION = nil;
TOKEN_COMPLETE_GAME_TIME_DESCRIPTION = nil;
TOKEN_BUYOUT_AUCTION_CONFIRMATION_DESCRIPTION = nil;
TOKEN_PRICE_LOCK_EXPIRE = nil;
TOKEN_CURRENT_AUCTION_VALUE = nil;
TOKEN_REDEEM_GAME_TIME_EXPIRATION_FORMAT_MINUTES = nil;
TOKEN_COMPLETE_GAME_TIME_DESCRIPTION_MINUTES = nil;
TOKEN_REDEEM_GAME_TIME_BUTTON_LABEL_MINUTES = nil;
TOKEN_REDEEM_GAME_TIME_DESCRIPTION_MINUTES = nil;
TOKEN_TRANSACTION_IN_PROGRESS = nil;
TOKEN_YOU_WILL_BE_LOGGED_OUT = nil;
TOKEN_REDEMPTION_UNAVAILABLE = nil;
TOKEN_COMPLETE_BALANCE_DESCRIPTION = nil;
TOKEN_CONFIRM_BALANCE_DESCRIPTION = nil;
TOKEN_REDEEM_BALANCE_BUTTON_LABEL = nil;
TOKEN_REDEEM_BALANCE_DESCRIPTION = nil;
TOKEN_REDEEM_BALANCE_CONFIRMATION_DESCRIPTION = nil;
TOKEN_REDEEM_BALANCE_ERROR_CAP_FORMAT = nil;
TOKEN_REDEEM_BALANCE_FORMAT = nil;
TOKEN_REDEEM_BALANCE_TITLE = nil;
BLIZZARD_CHALLENGE_SUBMIT = nil;
BLIZZARD_CHALLENGE_CANCEL = nil;
BLIZZARD_CHALLENGE_CONNECTING = nil;
BLIZZARD_CHALLENGE_OKAY = nil;
BLIZZARD_CHALLENGE_DENIED_TITLE = nil;
BLIZZARD_CHALLENGE_DENIED_DESCRIPTION = nil;
BLIZZARD_CHALLENGE_ERROR_TITLE = nil;
BLIZZARD_CHALLENGE_ERROR_DESCRIPTION = nil;
BLIZZARD_CHALLENGE_SCREEN_EXPLANATION = nil;
SEND_ITEMS_TO_STRANGER_WARNING = nil;
SEND_MONEY_TO_STRANGER_WARNING = nil;
TRADE_ACCEPT_CONFIRMATION = nil;
LE_TOKEN_RESULT_ERROR_BALANCE_NEAR_CAP = nil;
LE_TOKEN_REDEEM_TYPE_GAME_TIME = nil;
LE_TOKEN_REDEEM_TYPE_BALANCE = nil;
C_UnitAurasPrivate = nil;
C_PingSecure = nil;
SecureMixin = nil;
CreateFromSecureMixins = nil;
CreateSecureMixinCopy = nil;
loadstring_untainted = nil;
Enum.StoreError = nil;
Enum.VasTransactionPurchaseResult = nil;
Enum.BattlepayBoostProduct = nil;
Enum.BattlepayDisplayFlags = nil;
Enum.PurchaseEligibility = nil;
Enum.BattlepayProductDecorator = nil;
Enum.VasServiceType = nil;
Enum.VasPurchaseState = nil;
Enum.BattlepayProductGroupFlags = nil;
Enum.BattlepayGroupDisplayType = nil


e: num,
                info: '商品-' + index
            });
        }
        // console.log(list);
        this.queueData.goodsList = list;
        this.queueData.queueList = list;
    }

    /** 轮播图列表 */
    public swiperList = [
        {
            img: require('../assets/swiper_1.png')
        },{
            img: require('../assets/swiper_2.png')
        },{
            img: require('../assets/swiper_3.png')
        }
    ]

}

/** 自定义数据管理 */
const store = new ModuleStore();

export default store;// alert("Dit is mijn eerste typescript project!");
function show_winner(): void{
    let p_tag: HTMLParagraphElement;
    let a_tag: HTMLAnchorElement;
    let h5_tag: HTMLHeadingElement
    let img_tag: HTMLImageElement;

    p_tag = document.querySelector("#p_01");
    img_tag = document.querySelector("#img_01");
    a_tag = document.querySelector("#a_01");
    h5_tag = document.querySelector("#h5_01");

    if (a_tag.innerHTML == "Show Winner") {
        a_tag.innerHTML = "Back";
        p_tag.innerHTML = "The winner is Khabib!!"
        h5_tag.innerHTML = "Khabib Nurmagomedov"
        img_tag.setAttribute("src","./img/Khabib winner.jpg")
    }   else{
        a_tag.innerHTML = "Show Winner";
        p_tag.innerHTML = "Fight of the year, This saturday october 6.";
        h5_tag.innerHTML = "Conor VS Khabib"
        img_tag.setAttribute("src", "./img/khabib_vs_conor.jpg");
    }

}

function show_winner_01():void {
    let p_tag : HTMLParagraphElement;
    let a_tag: HTMLAnchorElement;
    let h5_tag: HTMLHeadingElement
    let img_tag: HTMLImageElement;

    p_tag = document.querySelector("#p_02");
    img_tag = document.querySelector("#img_02");
    a_tag = document.querySelector("#a_02");
    h5_tag = document.querySelector("#h5_02");

    if (a_tag.innerHTML == "Show Winner") {
        a_tag.innerHTML = "Back";
        p_tag.innerHTML = "The winner is Tony Ferguson!!"
        h5_tag.innerHTML = "Tony Ferguson"
        img_tag.setAttribute("src","./img/Tony Winner.jpg")
    }   else{
        a_tag.innerHTML = "Show Winner";
        p_tag.innerHTML = "The fight of the night!";
        h5_tag.innerHTML = "Tony VS Anthony"
        img_tag.setAttribute("src", "./img/ferguson_vs_pettis.png");
    }
}

function show_winner_02():void {
    let p_tag : HTMLParagraphElement;
    let a_tag: HTMLAnchorElement;
    let h5_tag: HTMLHeadingElement
    let img_tag: HTMLImageElement;

    p_tag = document.querySelector("#p_03");
    img_tag = document.querySelector("#img_03");
    a_tag = document.querySelector("#a_03");
    h5_tag = document.querySelector("#h5_03");

    if (a_tag.innerHTML == "Show Winner") {
        a_tag.innerHTML = "Back";
        p_tag.innerHTML = "The winner is Derrick Lewis!!"
        h5_tag.innerHTML = "Derrick Lewis!!"
        img_tag.setAttribute("src","./img/Lewis Winner.jpg")
    }   else{
        a_tag.innerHTML = "Show Winner";
        p_tag.innerHTML = "Performance of tonight!";
        h5_tag.innerHTML = "Lewis VS Volkov"
        img_tag.set


0004 */  sh    $t7, 4($a0)
/* 054918 800AC6C8 8CB80008 */  lw    $t8, 8($a1)
/* 05491C 800AC6CC A4990014 */  sh    $t9, 0x14($a0)
/* 054920 800AC6D0 AC980010 */  sw    $t8, 0x10($a0)
/* 054924 800AC6D4 90A80000 */  lbu   $t0, ($a1)
/* 054928 800AC6D8 A0880016 */  sb    $t0, 0x16($a0)
/* 05492C 800AC6DC 90A90001 */  lbu   $t1, 1($a1)
/* 054930 800AC6E0 A4800018 */  sh    $zero, 0x18($a0)
/* 054934 800AC6E4 A480001A */  sh    $zero, 0x1a($a0)
/* 054938 800AC6E8 0C00D6C8 */  jal   func_80035B20_ovl1
/* 05493C 800AC6EC A0890017 */   sb    $t1, 0x17($a0)
/* 054940 800AC6F0 8FBF0014 */  lw    $ra, 0x14($sp)
/* 054944 800AC6F4 27BD0018 */  addiu $sp, $sp, 0x18
/* 054948 800AC6F8 03E00008 */  jr    $ra
/* 05494C 800AC6FC 00000000 */   nop
.type func_800AC688, @function
.size func_800AC688, . - func_800AC688


usSample completed")
}

// PostVodPlayListSample Sample for generate playlist
func PostVodPlayListSample() {
	channelName := "post-vod-playlist"
	playlistName := "playlist.m3u8"
	bucket, err := GetTestBucket(bucketName)
	if err != nil {
		HandleError(err)
	}

	config := oss.LiveChannelConfiguration{
		Target: oss.LiveChannelTarget{
			Type:         "HLS", //the type of object, only supports HLS, required
			PlaylistName: "playlist.m3u8",
		},
	}

	_, err = bucket.CreateLiveChannel(channelName, config)
	if err != nil {
		HandleError(err)
	}

	//This stage you can push live stream, and after that you could generator playlist

	endTime := time.Now().Add(-1 * time.Minute)
	startTime := endTime.Add(-60 * time.Minute)
	err = bucket.PostVodPlaylist(channelName, playlistName, startTime, endTime)
	if err != nil {
		HandleError(err)
	}

	err = DeleteTestBucketAndLiveChannel(bucketName)
	if err != nil {
		HandleError(err)
	}

	fmt.Println("PostVodPlayListSampleSample completed")
}

// GetVodPlayListSample Sample for generate playlist and return the content of the playlist
func GetVodPlayListSample() {
	channelName := "get-vod-playlist"
	bucket, err := GetTestBucket(bucketName)
	if err != nil {
		HandleError(err)
	}

	config := oss.LiveChannelConfiguration{
		Target: oss.LiveChannelTarget{
			Type:         "HLS", //the type of object, only supports HLS, required
			PlaylistName: "playlist.m3u8",
		},
	}

	_, err = bucket.CreateLiveChannel(channelName, config)
	if err != nil {
		HandleError(err)
	}

	//This stage you can push live stream, and after that you could generator playlist

	endTime := time.Now().Add(-1 * time.Minute)
	startTime := endTime.Add(-60 * time.Minute)
	body, err := bucket.GetVodPlaylist(channelName, startTime, endTime)
	if err != nil {
		HandleError(err)
	}
	defer body.Close()

	data, err := ioutil.ReadAll(body)
	if err != nil {
		HandleError(err)
	}
	fmt.Printf("content of playlist is:%v\n", string(data))

	err = DeleteTestBucketAndLiveChannel(bucketName)
	if err != nil {
		HandleError(err)
	}

	fmt.Println("PostVodPlayListSampleSample completed")
}

// GetLiveChannelStatSample Sample for get the state of live-channel
func GetLiveChannelStatSample() {
	channelName := "get-livechannel-stat"
	bucket, err := GetTestBucket(bucketName)
	if err != nil {
		HandleError(err)
	}

	config := oss.LiveChannelConfiguration{
		Target: oss.LiveChannelTarget{
			Type: "HLS", //the type of object, only supports HLS, required
		},
	}

	_, err = bucket.CreateLiveChannel(channelName, config)
	if err != nil {
		HandleError(err)
	}

	stat, err := bucket.GetLiveChannelStat(channelName)
	if err != nil {
		HandleError(err)
	}

	status := stat.Status
	connectedTime := stat.ConnectedTime
	remoteAddr := stat.RemoteAddr

	audioBW := stat.Audio.Bandwidth
	audioCodec := stat.Audio.Codec
	audioSampleRate := stat.Audio.SampleRate

	videoBW := stat.Video.Bandwidth
	videoFrameRate := stat.Video.FrameRate
	videoHeight := stat.Video.Height
	videoWidth := stat.Video.Width

	fmt.Printf("get channel stat:（%v, %v，%v, %v）, audio(%v, %v,


import _plotly_utils.basevalidators

class TextfontValidator(_plotly_utils.basevalidators.CompoundValidator):
    def __init__(
        self, plotly_name="textfont", parent_name="scatterpolargl.unselected", **kwargs
    ):
        super(TextfontValidator, self).__init__(
            plotly_name=plotly_name,
            parent_name=parent_name,
            data_class_str=kwargs.pop("data_class_str", "Textfont"),
            data_docs=kwargs.pop(
                "data_docs",
                """
            color
                Sets the text font color of unselected points,
                applied only when a selection exists.
""",
            ),
            **kwargs,
        )


.startTime) - GameServer.serverTime) / 1000);
		let endedTime = Math.floor((DateUtils.formatMiniDateTime(this.endTime) - GameServer.serverTime) / 1000);
		let desc: string;
		if (beganTime >= 0) {
			desc = "活动未开启";
		} else if (endedTime <= 0) {
			desc = "活动已结束";
		} else {
			desc = DateUtils.getFormatBySecond(endedTime, DateUtils.TIME_FORMAT_5, 3)
		}
		return desc;
	}

}
/**红包数据*/
// class RedEnvelope{
//     public id:number;//红包id
//     public timer:number;//红包结束时间 2010时间戳
//     public constructor(){
//         this.id = 0;
//         this.timer = 0;
//     }
//     public isOverTimer(){
//         let endedTime = Math.floor((DateUtils.formatMiniDateTime(this.timer) - GameServer.serverTime) / 1000);
//         return endedTime <= 0?true:false;
//     }
//     // public updateTimer(){
//     //     if( this.id && this.timer > 0 ){
//     //         this.timer--;
//     //     }
//     // }
// }
/**红包具体数据*/
class QenvelopeData {
	public recordId:number;
	public name: string;
	public eId: number;
	public job: number;
	public sex: number;
	public isEwai: number;
	public yuanbao: number;
	public constructor() {
		this.recordId = 0;
		this.eId = 0;
		this.job = 0;
		this.sex = 0;
		this.yuanbao = 0;
		this.name = "";
		this.isEwai = 0;
	}
}
class MyQenvelopeData {
	public eId: number;
	public Ewai_yuanbao: number;
	public yuanbao: number;
}
// /**25-2协议类型*/
// enum EnvelopeType{
//     SEND = 1,//发红包(25-2发送参数: 活动id, 活动序号index, EnvelopeType.SEND, 祝福语? )
//     GET  = 2,//领红包(25-2发送参数: 活动id, 红包id, EnvelopeType.GET )
// }
import {AffectType} from "../../../affect/enum/affectType"
import {createTestAppContainer} from "../../../app/factory/testFactory"
import {RequestType} from "../../../messageExchange/enum/requestType"
import {ResponseStatus} from "../../../messageExchange/enum/responseStatus"
import {allDispositions, Disposition} from "../../../mob/enum/disposition"
import MobBuilder from "../../../support/test/mobBuilder"
import TestRunner from "../../../support/test/testRunner"
import {Types} from "../../../support/types"
import {ConditionMessages} from "../../constants"

let testRunner: TestRunner
let mob: MobBuilder

beforeEach(async () => {
  testRunner = (await createTestAppContainer()).get<TestRunner>(Types.TestRunner)
  mob = await testRunner.createMob()
})

describe("kill action", () => {
  it("cannot kill self", async () => {
    // when
    const response = await testRunner.invokeAction(RequestType.Kill, `kill ${mob.getMobName()}`)

    // then
    expect(response.isSuccessful()).toBeFalsy()
    expect(response.getMessageToRequestCreator()).toBe(ConditionMessages.All.Mob.CannotAttackSelf)
  })

  it("sanity check", async () => {
    // given
    const target = await testRunner.createMob()

    // when
    const response = await testRunner.invokeAction(RequestType.Kill, `kill ${target.getMobName()}`)

    // then
    expect(response.status).toBe(ResponseStatus.Success)
    expect(response.getMessageToRequestCreator())
      .toBe(`you scream and attack ${target.getMobName()}!`)
    expect(response.message.getMessageToTarget(


sources/fontconfig.rs.html#119-152
		//
		// Our strategy is
		//	- performs family substitutions
		//	- match fonts against all these families
		//	- restrict the result to the first (best) family

		cribleBuffer.reset()
		cribleBuffer.fillWithSubstitutions(family, 0)

		footprints := fm.selectByFamiliesAndScript(cribleBuffer, 0, footprintsBuffer)

		// restrict to one 'concrete' family name
		if len(footprints) == 0 {
			return nil
		}
		selectedFamily := fm[footprints[0]].Family
		// only keep the first footprints with same family name
		var i int
		for ; i < len(footprints); i++ {
			if fp := fm[footprints[i]]; fp.Family != selectedFamily {
				break
			}
		}
		return footprints[:i]
	}

	// regular family : perform a simple match against the exact family name, without substitutions
	// nor script matching
	cribleBuffer = familyCrible{font.NormalizeFamily(family): scoreStrong{0, true}}
	return fm.selectByFamiliesAndScript(cribleBuffer, 0, footprintsBuffer)
}

// selectByFamilyExact returns all the fonts in the fontmap matching
// the given query, with the best matches coming first.
//
// `queryFamilies` is expanded with family substitutions
func (fm fontSet) selectByFamilyWithSubs(queryFamilies []string, queryScript language.Script,
	cribleBuffer familyCrible, footprintsBuffer *scoredFootprints,
) []int {
	// if not found, the zero value is fine (language based substitutions will be disabled)
	queryLang := language.ScriptToLang[queryScript]

	// build the crible, handling substitutions
	cribleBuffer.reset()
	cribleBuffer.fillWithSubstitutionsList(queryFamilies, queryLang)
	return fm.selectByFamiliesAndScript(cribleBuffer, queryScript, footprintsBuffer)
}

// select the fonts in the fontSet matching [crible], returning their (sorted) indices.
// [footprintsBuffer] is used to reduce allocations.
// If [script] is 0, no font with matching script is added
func (fm fontSet) selectByFamiliesAndScript(crible familyCrible, script language.Script, footprintsBuffer *scoredFootprints) []int {
	footprintsBuffer.reset(fm, script)

	// loop through the font set and stores the matching fonts into
	// the footprintsBuffer, to be sorted.
	for index, footprint := range fm {
		if score, has := crible[footprint.Family]; has {
			// match by family
			footprintsBuffer.footprints = append(footprintsBuffer.footprints, index)
			footprintsBuffer.scores = append(footprintsBuffer.scores, score)
		} else if footprint.Scripts.contains(script) {
			// match by script: add with a score worse than any family match
			footprintsBuffer.footprints = append(footprintsBuffer.footprints, index)
			footprintsBuffer.scores = append(footprintsBuffer.scores, scoreStrong{math.MaxInt, false})
		}
	}

	// sort the matched fonts (see [scoredFootprints.Less])
	sort.Stable(*footprintsBuffer)

	return footprintsBuffer.footprints
}

// matchStretch look for the given stretch in the font set,
// or, if not found, the closest stretch
// if always return a valid value (contained in `candidates`) if `candidates` is not empty
func (fs fontSet) matchStretch(candidates []int, query font.Stretch) font.Stretch {
	// narrower and wider than the query
	var narrower, wider font.Stretch

	for _, index := range candidates {
		stretch := fs[index].Aspect.Stretch
		if stretch > query { // wider candidate
			if wider == 0 || stretch-query < wider-query { // closer
				wi


.
        /// </summary>
        /// <param name="settings">Controls the initial configuration and other settings for constructing the <see cref="HostApplicationBuilder"/>.</param>
        /// <returns>The initialized <see cref="HostApplicationBuilder"/>.</returns>
        public static HostApplicationBuilder CreateEmptyApplicationBuilder(HostApplicationBuilderSettings? settings)
            => new HostApplicationBuilder(settings, empty: true);
    }
}


f,
                     CPU->CycleToDo - CCnt, CPU->CycleToDo);
}
# endif  // TRACE_WITH_Q68
#endif  // !C68K_GEN

// main exec function
//////////////////////

#if defined(SCSP_LOG)
extern unsigned char ** scsp_pc;
#endif

s32 FASTCALL C68k_Exec(c68k_struc *cpu, s32 cycle)
{
#ifndef C68K_GEN
#if 0
    register c68k_struc *CPU asm ("ebx");
    register pointer PC asm ("esi");
    register s32 CCnt asm ("edi");
//    register u32 Opcode asm ("edi");
//    c68k_struc *CPU;
//    u32 PC;
//    s32 CCnt;
    u32 Opcode;
#else
//    register c68k_struc *CPU asm ("r10");
//    register u32 PC asm ("r11");
//    register s32 CCnt asm ("r12");
//    register u32 Opcode asm ("r13");
    c68k_struc *CPU;
    pointer PC;
    s32 CCnt;
    u32 Opcode;
#endif
#endif

#if defined(SCSP_LOG)
	scsp_pc = &PC;
#endif

#ifndef C68K_GEN

#ifndef C68K_NO_JUMP_TABLE
#ifdef C68K_CONST_JUMP_TABLE
    #include "c68k_ini.inc"
#endif
#else
    C68k_Initialised = 1;
#endif

    CPU = cpu;
    PC = CPU->PC;

    if (CPU->Status & (C68K_RUNNING | C68K_DISABLE | C68K_FAULTED))
    {
#ifndef C68K_NO_JUMP_TABLE
#ifndef C68K_CONST_JUMP_TABLE
        if (!C68k_Initialised) goto C68k_Init;
#endif
#endif
        return (CPU->Status | 0x80000000);
    }

    if (cycle <= 0) return -cycle;

    CPU->CycleToDo = CCnt = cycle;

#ifndef C68K_DEBUG
    CHECK_INT
#else
    {
        s32 line, vect;

        line = CPU->IRQLine;

        if ((line == 7) || (line > CPU->flag_I))
        {
            PRE_IO

            /* get vector */
            CPU->IRQLine = 0;
            vect = CPU->Interrupt_CallBack(line);
            if (vect == C68K_INT_ACK_AUTOVECTOR)
                vect = C68K_INTERRUPT_AUTOVECTOR_EX + (line & 7);

            /* adjust CCnt */
            CCnt -= c68k_exception_cycle_table[vect];

            /* swap A7 and USP */
            if (!CPU->flag_S)
            {
                u32 tmpSP;

                tmpSP = CPU->USP;
                CPU->USP = CPU->A[7];
                CPU->A[7] = tmpSP;
            }

            /* push PC and SR */
            PUSH_32_F(PC - CPU->BasePC)
            PUSH_16_F(GET_SR)

            /* adjust SR */
            CPU->flag_S = C68K_SR_S;
            CPU->flag_I = line;

            /* fetch new PC */
            READ_LONG_F(vect * 4, PC)
            SET_PC(PC)

            POST_IO
        }
    }
#endif

    if (CPU->Status & (C68K_HALTED | C68K_WAITING)) return CPU->CycleToDo;

    CPU->CycleSup = 0;
    CPU->Status |= C68K_RUNNING;

#ifndef C68K_DEBUG
    NEXT
#else
#ifdef C68K_NO_JUMP_TABLE
    NEXT
#else
    Opcode = FETCH_WORD;
    PC += 2;
    goto *JumpTable[Opcode];
#endif
#endif

#ifdef C68K_NO_JUMP_TABLE
SwitchTable:
    switch(Opcode)
    {
#endif
    #include "c68k_op0.inc"
    #include "c68k_op1.inc"
    #include "c68k_op2.inc"
    #include "c68k_op3.inc"
    #include "c68k_op4.inc"
    #include "c68k_op5.inc"
    #include "c68k_op6.inc"
    #include "c68k_op7.inc"
    #include "c68k_op8.inc"
    #include "c68k_op9.inc"
    #include "c68k_opA.inc"
    #include "c68k_opB.inc"
    #include "c68k_opC.inc"
    #include "c68k_opD.inc"
    #include "c68k_opE.inc"
    #include "c68k_opF.inc"
#ifdef C68K_NO_JUMP_TABLE
    }
#endif

C68k_Exec_End:
    CHECK_INT
    if ((CCnt += CPU->CycleSup) > 0)
    {
        CPU->CycleSup = 0;
        NEXT;
    }

C68k_Exec_Really_End:
    CPU->Status &= ~C68K_RUNNING;
    CPU->PC = PC;

    return (CPU->CycleToDo - CCnt);

#ifndef C68K_CONST_JUMP_TABLE
#ifndef C68K_NO_JUMP_TABLE
C68k_Init:
    {
        u32 i, j;

        #include "c68k_ini.inc"

        C68k_Initialised = 1;
    }

    return 0;
#endif
#endif
#else
    return 0;
#endif
}


ieldMask update_mask = 2 [(.google.api.field_behavior) = REQUIRED];
   *
   *
   * @return Whether the updateMask field is set.
   */
  boolean hasUpdateMask();

  /**
   *
   *
   *

   * Required. A list of fields to be updated in this request.
   *

   *
   * .google.protobuf.FieldMask update_mask = 2 [(.google.api.field_behavior) = REQUIRED];
   *
   *
   * @return The updateMask.
   */
  com.google.protobuf.FieldMask getUpdateMask();

  /**
   *
   *
   *

   * Required. A list of fields to be updated in this request.
   *

   *
   * .google.protobuf.FieldMask update_mask = 2 [(.google.api.field_behavior) = REQUIRED];
   *
   */
  com.google.protobuf.FieldMaskOrBuilder getUpdateMaskOrBuilder();

  /**
   *
   *
   *

   * Optional. An ID to identify requests. Specify a unique request ID so that if you must
   * retry your request, the server will know to ignore the request if it has
   * already been completed. The server will guarantee that for at least 60
   * minutes since the first request.
   *
   * For example, consider a situation where you make an initial request and t
   * he request times out. If you make the request again with the same request
   * ID, the server can check if original operation with the same request ID
   * was received, and if so, will ignore the second request. This prevents
   * clients from accidentally creating duplicate commitments.
   *
   * The request ID must be a valid UUID with the exception that zero UUID is
   * not supported (00000000-0000-0000-0000-000000000000).
   *

   *
   * string request_id = 3 [(.google.api.field_behavior) = OPTIONAL];
   *
   * @return The requestId.
   */
  java.lang.String getRequestId();

  /**
   *
   *
   *

   * Optional. An ID to identify requests. Specify a unique request ID so that if you must
   * retry your request, the server will know to ignore the request if it has
   * already been completed. The server will guarantee that for at least 60
   * minutes since the first request.
   *
   * For example, consider a situation where you make an initial request and t
   * he request times out. If you make the request again with the same request
   * ID, the server can check if original operation with the same request ID
   * was received, and if so, will ignore the second request. This prevents
   * clients from accidentally creating duplicate commitments.
   *
   * The request ID must be a valid UUID with the exception that zero UUID is
   * not supported (00000000-0000-0000-0000-000000000000).
   *

   *
   * string request_id = 3 [(.google.api.field_behavior) = OPTIONAL];
   *
   * @return The bytes for requestId.
   */
  com.google.protobuf.ByteString getRequestIdBytes();
}
/*
 * Copyright 2025 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// Generated by the protocol buffer compiler.


 (OB_RESOURCE_RELEASED == ret) {
      LOG_INFO("block is deleting, no need to insert pages for flushing", KR(ret), KPC(this));
      ret = OB_SUCCESS;
    } else {
      LOG_ERROR("fail to insert page into block", KR(ret), KPC(this));
    }
  } else if (OB_FAIL(block->reinsert_into_flush_prio_mgr())) {
    LOG_ERROR("fail to exec reinsert_into_flush_prio_mgr", KR(ret), KPC(this));
  }
  ATOMIC_SET(&ret_code_, ret_code);
  ATOMIC_SET(&is_finished_, true);
  return ret;
}

}  // end namespace tmp_file
}  // end namespace oceanbase
/**
 * Copyright (c) 2021 OceanBase
 * OceanBase CE is licensed under Mulan PubL v2.
 * You can use this software according to the terms and conditions of the Mulan PubL v2.
 * You may obtain a copy of Mulan PubL v2 at:
 *          http://license.coscl.org.cn/MulanPubL-2.0
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PubL v2 for more details.
 */

#define USING_LOG_PREFIX STORAGE

#include "storage/tmp_file/ob_sn_tmp_file_manager.h"

namespace oceanbase
{
namespace tmp_file
{
int64_t ObSNTenantTmpFileManager::current_fd_ = ObTmpFileGlobal::INVALID_TMP_FILE_FD;
int64_t ObSNTenantTmpFileManager::current_dir_id_ = ObTmpFileGlobal::INVALID_TMP_FILE_DIR_ID;

ObSNTenantTmpFileManager::ObSNTenantTmpFileManager()
  : ObITenantTmpFileManager(),
    write_cache_(),
    tmp_file_block_manager_()
{
}

ObSNTenantTmpFileManager::~ObSNTenantTmpFileManager()
{
}

int ObSNTenantTmpFileManager::init_sub_module_()
{
  int ret = OB_SUCCESS;

  if (OB_FAIL(tmp_file_block_manager_.init(tenant_id_))) {
    LOG_WARN("fail to init tenant tmp file block manager", KR(ret));
  } else if (OB_FAIL(write_cache_.init(&tmp_file_block_manager_))) {
    LOG_WARN("fail to init write cache", KR(ret));
  } else {
    LOG_INFO("ObSNTenantTmpFileManager init successful", K(tenant_id_), KP(this));
  }

  return ret;
}

int ObSNTenantTmpFileManager::start_sub_module_()
{
  int ret = OB_SUCCESS;
  if (OB_FAIL(write_cache_.start())) {
    LOG_WARN("fail to init tmp file write cache", KR(ret), K(tenant_id_));
  } else {
    is_running_ = true;
  }
  LOG_INFO("ObSNTenantTmpFileManager start over", KR(ret), K(tenant_id_), KP(this));
  return ret;
}

int ObSNTenantTmpFileManager::stop_sub_module_()
{
  int ret = OB_SUCCESS;
  write_cache_.stop();
  LOG_INFO("ObSNTenantTmpFileManager stop successful", K(tenant_id_), KP(this));
  return ret;
}

int ObSNTenantTmpFileManager::wait_sub_module_()
{
  int ret = OB_SUCCESS;
  write_cache_.wait();
  LOG_INFO("ObSNTenantTmpFileManager wait successful", K(tenant_id_), KP(this));
  return ret;
}

int


<T> {
  public:
    template <typename F, typename... Args>
    void add(const F& funct, const Args&... args);
};

#ifdef H5_HAVE_PARALLEL
///
/// \brief Configure MPI access for the file
///
/// All further modifications to the structure of the file will have to be
/// done with collective operations
///
class MPIOFileAccess {
  public:
    MPIOFileAccess(MPI_Comm comm, MPI_Info info);

  private:
    friend FileAccessProps;
    void apply(const hid_t list) const;

    MPI_Comm _comm;
    MPI_Info _info;
};

///
/// \brief Use collective MPI-IO for metadata read and write.
///
/// See `MPIOCollectiveMetadataRead` and `MPIOCollectiveMetadataWrite`.
///
class MPIOCollectiveMetadata {
  public:
    explicit MPIOCollectiveMetadata(bool collective = true);
    explicit MPIOCollectiveMetadata(const FileAccessProps& plist);

    bool isCollectiveRead() const;
    bool isCollectiveWrite() const;

  private:
    friend FileAccessProps;
    void apply(hid_t plist) const;

    bool collective_read_;
    bool collective_write_;
};

///
/// \brief Use collective MPI-IO for metadata read?
///
/// Note that when used in a file access property list, this will force all reads
/// of meta data to be collective. HDF5 function may implicitly perform metadata
/// reads. These functions would become collective. A list of functions that
/// perform metadata reads can be found in the HDF5 documentation, e.g.
///    https://docs.hdfgroup.org/hdf5/v1_12/group___g_a_c_p_l.html
///
/// In HighFive setting collective read is (currently) only supported on file level.
///
/// Please also consult upstream documentation of `H5Pset_all_coll_metadata_ops`.
///
class MPIOCollectiveMetadataRead {
  public:
    explicit MPIOCollectiveMetadataRead(bool collective = true);
    explicit MPIOCollectiveMetadataRead(const FileAccessProps& plist);

    bool isCollective() const;

  private:
    friend FileAccessProps;
    friend MPIOCollectiveMetadata;

    void apply(hid_t plist) const;

    bool collective_;
};

///
/// \brief Use collective MPI-IO for metadata write?
///
/// In order to keep the in-memory representation of the file structure
/// consistent across MPI ranks, writing meta data is always a collective
/// operation. Meaning all MPI ranks must participate. Passing this setting
/// enables using MPI-IO collective operations for metadata writes.
///
/// Please also consult upstream documentation of `H5Pset_coll_metadata_write`.
///
class MPIOCollectiveMetadataWrite {
  public:
    explicit MPIOCollectiveMetadataWrite(bool collective = true);
    explicit MPIOCollectiveMetadataWrite(const FileAccessProps& plist);

    bool isCollective() const;

  private:
    friend FileAccessProps;
    friend MPIOCollectiveMetadata;

    void apply(hid_t plist) const;

    bool collective_;
};

#endif

///
/// \brief Configure the version bounds for the file
///
/// Used to define the compatibility of objects created within HDF5 files,
/// and affects the format of groups stored in the file.
///
/// See also the documentation of \c H5P_SET_LIBVER_BOUNDS in HDF5.
///
/// Possible values for \c low and \c high are:
/// * \c H5F_LIBVER_EARLIEST
/// * \c H5F_LIBVER_V18
/// * \c H5F_LIBVER_V110
/// * \c H5F_LIBVER_NBOUNDS
/// * \c H5F_LIBVER_LATEST currently defined as \c H5F_LIBVER_V110 within
///   HDF5
///
class FileVersionBounds {
  public:
    FileVersionBounds(H5F_libver_t low, H5F_libver_t high);
    explicit FileVersionBounds(const FileAccessProps& fapl);

    std::pair<H5F_


omfyUI主体版本需要>=0.3.7

## 更新日志
### 2025.02.19
- 解决多张人脸时选择的人脸嵌入量和对齐特征不是同一个人脸的问题。
### 2025.02.18
- 支持从含有多张脸的图片中选择一张脸作为参考。[示例工作流](examples/PuLID_select_ref_face.png).
### 2025.01.27
- 修改 facexlib 的模型路径为 `ComfyUI/models/facexlib/`.
- 自动下载时 修改 Antelopev2 模型的路径为 `ComfyUI/models/insightface/models/antelopev2/`.
- 修改 EVA_CLIP_L_14_336 的模型路径为 `ComfyUI/models/clip/`.

## 预览 (图片含工作流)
![save api extended](examples/PuLID_with_speedup.png)
![save api extended](examples/PuLID_with_attn_mask.png)
![save api extended](examples/PuLID_select_ref_face.png)

## 安装

- 手动
```shell
    cd custom_nodes
    git clone https://github.com/lldacing/ComfyUI_PuLID_Flux_ll.git
    cd ComfyUI_PuLID_Flux_ll
    pip install -r requirements.txt
    # 重启 ComfyUI
```
安装问题:

- 如果使用`ComfyUI_windows_portable`并遇到以下错误, 请查看 https://github.com/deepinsight/insightface/issues/2576
```
insightface/thirdparty/face3d/mesh/cython/mesh_core_cython.cpp(36): fatal error C1083: 无法打开包括文件: “Python.h”: No such file or directory
      error: command 'd:\\installed\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.42.34433\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for insightface
Failed to build insightface
```

## 模型
### 可用的 Flux 模型
- 32bit/16bit (~22GB VRAM): [model](https://huggingface.co/black-forest-labs/FLUX.1-dev/blob/main/flux1-dev.safetensors), [encoder](https://huggingface.co/comfyanonymous/flux_text_encoders/blob/main/t5xxl_fp16.safetensors)
- 8bit gguf (~12GB VRAM): [model](https://huggingface.co/city96/FLUX.1-dev-gguf/blob/main/flux1-dev-Q8_0.gguf), [encoder](https://h


---@class Configuration
---@field VoiceEnabled boolean
---@field ServerUniqueIdentifier string
---@field MinimumPluginVersion string
---@field SoundPack string
---@field IngameChannelId number
---@field IngameChannelPassword string
---@field SwissChannelIds number[]
---@field VoiceRanges number[]
---@field EnableVoiceRangeNotification boolean
---@field VoiceRangeNotification string
---@field IgnoreInvisiblePlayers boolean
---@field RadioType number
---@field EnableRadioHardcoreMode boolean
---@field UltraShortRangeDistance number
---@field ShortRangeDistance number
---@field LongRangeDistace number
---@field MegaphoneRange number
---@field VariablePhoneDistortion boolean
---@field NamePattern string
---@field RequestTalkStates boolean
---@field RequestRadioTrafficStates boolean
---@field ToggleRange string
---@field TalkPrimary string
---@field TalkSecondary string
---@field TalkMegaphone string

Configuration = {
  ---@type boolean
  Debug = true,
  ---@type boolean
  VoiceEnabled = true,
  ---@type string
  ServerUniqueIdentifier = "alJ5SxosXNv4zpmY92D1ev4Nt/Y=",
  ---@type string
  MinimumPluginVersion = "3.1.0",


 {
          // Call migrate API
          await siteApi.request(`/api/madoc/crowdsourcing/model/migrate/${modelId}`, {
            method: 'POST',
          });

          // Mark as done.
          await api.updateTask(taskId, { status: 3 });
        } catch (e) {
          await api.updateTask(taskId, { status: -1 });
        }
      }
      break;
    }
    case 'subtask_type_status.migrate-capture-model-task.3': {
      await api.updateTask(taskId, { status: 3 });
      break;
    }
  }
};
///<reference path="../babylon.2.1.d.ts"/>

module ORBIT_SPHERE {
    export class Sphere {
        private mass: number;
        private velocity: BABYLON.Vector3;

        private mesh: BABYLON.Mesh;

        constructor(mass: number, scene :BABYLON.Scene) {
            this.mass = mass;
            this.velocity = new BABYLON.Vector3(0,0,0);

            // Our built-in 'sphere' shape. Params: name, subdivs, size, scene
            this.mesh = BABYLON.Mesh.CreateSphere("sphere", 8 * this.mass, this.mass, scene);
        }

        public getMass() : number{
            return this.mass;
        }

        public getVelocity():BABYLON.Vector3 {
            return this.velocity;
        }

        public setVelocity(value:BABYLON.Vector3) {
            this.velocity = value;
        }

        public addVelocity(value: BABYLON.Vector3){
            this.velocity = this.velocity.add(value);
        }

        public getPosition():BABYLON.Vector3 {
            return  this.mesh.position;
        }

        public setPosition(value:BABYLON.Vector3) {
            this.mesh.position.x = value.x;
            this.mesh.position.y = value.y;
            this.mesh.position.z = value.z;

        }

        private getGravitation(other: Sphere) : number{
            var distance: number = (other.getPosition().subtract(this.getPosition())).length();
            var gravity:number = other.getMass() / (distance * distance);

            return gravity;
        }

        private getDirection(other: Sphere) : BABYLON.Vector3{
            return this.getPosition().subtract(other.getPosition()).normalize();
        }

        public interact(other: Sphere){
            var g : number = this.getGravitation(other);
            this.addVelocity(this.getDirection(other).multiplyByFloats(g, g, g));
        }
    }
}import { shouldQuery } from './should-query';

it('returns `false` for an empty string', () => {
  expect(shouldQuery('', 3)).toBe(false);
});

it('returns `false` for a string with only whitespace', () => {
  expect(shouldQuery('   \t\t\t\n\n\n', 3)).toBe(false);
});

it('returns `false` for a string with only special characters', () => {
  expect(shouldQuery('!@#$%^&*()_+-=[]{}\\', 3)).toBe(false);
});

it('returns `false` for a string with only numbers', () => {
  expect(shouldQuery('123123123', 3)).toBe(false);
});

it('returns `false` for a string with too few letters', () => {
  expect(shouldQuery('833 c', 2)).toBe(false);
  expect(shouldQuery('833 co', 3)).toBe(false);
  expect(shouldQuery('833 col', 4)).toBe(false);
  expect(shouldQuery('833 coll', 5)).toBe(false);
  expect(shouldQuery('833 colli', 6)).toBe(false);
});

it('returns `true` for a string with enough letters', () =


iente. Por lo visto, se trataba de algo gordo, un gran secreto. Pero no solo los Defias están implicados. Trabajan con alguien. Creo que sabían que esto era algo grande.","Lo único que yo tenía que hacer era subir a bordo del barco del rey a su hombre, mientras el barco estaba en el puerto. El tipo se llamaba Hendel. Eso es todo lo que sé. Lo juro."}, {"Habla con Mikhail en Los Humedales."}},
[1251] = {"El escudo negro", {"Un escudo de hierro, ennegrecido por el fuego que arrasó la posada, cuelga de la chimenea, una de las pocas partes de la estructura de la Posada Reposo Umbrío que han sobrevivido.","El escudo puede separarse del ladrillo de la chimenea."}, {"Lleva el escudo de hierro ennegrecido a Krog al Poblado Murohelecho."}},
[1252] = {"Teniente Paval Reethe", {"Debajo de los escombros, en el suelo, ves un destello de luz. Apartas los escombros y la ceniza y descubres una insignia de esmalte blanco con un ancla de oro: el sello de Theramore.","Debajo del ancla hay un nombre grabado: \"Teniente Paval Reethe\"."}, {"Lleva el distintivo de Reethe al capitán Garran Vimes de Theramore."}},
[1253] = {"El escudo negro", {"Un escudo de hierro, ennegrecido por el fuego que arrasó la posada, cuelga de la chimenea, una de las pocas partes de la estructura de la Posada Reposo Umbrío que han sobrevivido.","El escudo puede separarse del ladrillo de la chimenea."}, {"Lleva el escudo de hierro ennegrecido al capitán Garran Vimes a Theramore."}},
[1258] = {"...con tropezones", {"Otro ingrediente para mi nueva receta es la pata de cangrejo gigante sin pelar. Para ello, los cangrejos del Marjal Revolcafango, esos que llaman reptadores de roca espinosos, ¡serían perfectos!","La cáscara de la pata de cangrejo es un elemento clave de la presentación del plato, así que necesito patas impolutas, sin marcas. Un cangrejo adulto solo tiene una o dos patas de esas y yo necesitaré muchas para mis pruebas.","Dirígete a las rocas que rodean Theramore y ¡consígueme esas patas!"}, {"Lleva 12 patas de reptador prístinas a Morgan Stern a Theramore."}},
[1259] = {"Teniente Paval Reethe", {"No reconozco el nombre... Teniente Paval Reethe... Será mejor que consultes al ayudante Tesoran. Él lleva todos los registros de la Guardia de Theramore, desde el personal hasta el equipamiento.","Él debería poder decirte quién es Reethe, solo tendrá que echar un vistazo a los libros."}, {"Averigua más sobre Reethe hablando con el ayudante Tesoran en Theramore."}},
[1260] = {"Morgan Stern", {"Estoy preparando un nuevo menú para el restaurante. Estará lleno de platos rurales con un mismo tema: el pantano. ¡Seguro que a mis clientes de El Ermitaño Taciturno les encanta!","Envié a mi sobrino Morgan a Theramore, una ciudad que hay en la frontera del Marjal Revolcafango. Está recogiendo recetas de sus habitantes y necesito saber qué ha conseguido hasta ahora.","El viaje a Theramore es largo. Demasiado para mí. Pero seguro que <un/una> <clase> como tú, aprovecha cualquier oportunidad para viajar."}, {"Habla con Morgan Stern en Theramore."}},
[1261] = {"Las


nization=t.owner,t.name=C[3],n=C[4].split("/"),n.length>1&&(["raw","browse"].indexOf(n[1])>=0?(t.filepathtype=n[1],n.length>2&&(t.filepath=n.slice(2).join("/"))):n[1]==="commits"&&n.length>2&&(t.commit=n[2])),t.full_name=t.owner+"/"+t.name,t.query.at?t.ref=t.query.at:t.ref=""),t}FT.stringify=function(r,e){e=e||(r.protocols&&r.protocols.length?r.protocols.join("+"):r.protocol);var t=r.port?":"+r.port:"",i=r.user||"git",n=r.git_suffix?".git":"";switch(e){case"ssh":return t?"ssh://"+i+"@"+r.resource+t+"/"+r.full_name+n:i+"@"+r.resource+":"+r.full_name+n;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+i+"@"+r.resource+t+"/"+r.full_name+n;case"http":case"https":var s=r.token?WWe(r):r.user&&(r.protocols.includes("http")||r.protocols.includes("https"))?r.user+"@":"";return e+"://"+s+r.resource+t+"/"+zWe(r)+n;default:return r.href}};function WWe(r){switch(r.source){case"bitbucket.org":return"x-token-auth:"+r.token+"@";default:return r.token+"@"}}function zWe(r){switch(r.source){case"bitbucket-server":return"scm/"+r.full_name;default:return""+r.full_name}}Woe.exports=FT});var tO=w((xIt,fae)=>{var p3e=gh(),d3e=Ah();function C3e(r,e,t){(t!==void 0&&!d3e(r[e],t)||t===void 0&&!(e in r))&&p3e(r,e,t)}fae.exports=C3e});var pae=w((PIt,hae)=>{var m3e=rm(),E3e=Go();function I3e(r){return E3e(r)&&m3e(r)}hae.exports=I3e});var mae=w((DIt,Cae)=>{var y3e=Ic(),w3e=cQ(),B3e=Go(),Q3e="[object Object]",b3e=Function.prototype,S3e=Object.prototype,dae=b3e.toString,v3e=S3e.hasOwnProperty,x3e=dae.call(Object);function P3e(r){if(!B3e(r)||y3e(r)!=Q3e)return!1;var e=w3e(r);if(e===null)return!0;var t=v3e.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&dae.call(t)==x3e}Cae.exports=P3e});var rO=w((kIt,Eae)=>{function D3e(r,e){if(!(e==="constructor"&&typeof r[e]=="function")&&e!="__proto__")return r[e]}Eae.exports=D3e});var yae=w((RIt,Iae)=>{var k3e=Nh(),R3e=Lh();function F3e(r){return k3e(r,R3e(r))}Iae.exports=F3e});var vae=w((FIt,Sae)=>{var wae=tO(),N3e=dT(),L3e=ET(),T3e=CT(),O3e=IT(),Bae=zC(),Qae=ws(),M3e=


",
        "019": "Ameríka",
        "021": "Ameríka norðan Mexikó",
        "029": "Karíbahafið",
        "030": "Austur-Asía",
        "034": "Suður-Asía",
        "035": "Suðaustur-Asía",
        "039": "Suður-Evrópa",
        "053": "Ástralasía",
        "054": "Melanesía",
        "057": "Míkrónesíusvæðið",
        "061": "Pólýnesía",
        "142": "Asía",
        "143": "Mið-Asía",
        "145": "Vestur-Asía",
        "150": "Evrópa",
        "151": "Austur-Evrópa",
        "154": "Norður-Evrópa",
        "155": "Vestur-Evrópa",
        "202": "Afríka sunnan Sahara",
        "419": "Rómanska Ameríka",
        "AC": "Ascension-eyja",
        "AE": "Sameinuðu arabísku furstadæmin",
        "AF": "Afganistan",
        "AG": "Antígva og Barbúda",
        "AI": "Angvilla",
        "AL": "Albanía",
        "AM": "Armenía",
        "AO": "Angóla",
        "AQ": "Suðurskautslandið",
        "AR": "Argentína",
        "AS": "Bandaríska Samóa",
        "AT": "Austurríki",
        "AU": "Ástralía",
        "AW": "Arúba",
        "AX": "Álandseyjar",
        "AZ": "Aserbaídsjan",
        "BA": "Bosnía og Hersegóvína",
        "BD": "Bangladess",
        "BE": "Belgía",
        "BF": "Búrkína Fasó",
        "BG": "Búlgaría",
        "BH": "Barein",
        "BI": "Búrúndí",
        "BJ": "Benín",
        "BL": "Sankti Bartólómeusareyjar",
        "BM": "Bermúdaeyjar",
        "BN": "Brúnei",
        "BO": "Bólivía",
        "BQ": "Karíbahafshluti Hollands",
        "BR": "Brasilía",
        "BS": "Bahamaeyjar",
        "BT": "Bútan",
        "BV": "Bouveteyja",
        "BW": "Botsvana",
        "BY": "Hvíta-Rússland",
        "BZ": "Belís",
        "CA": "Kanada",
        "CC": "Kókoseyjar (Keeling)",
        "CD": "Kongó-Kinshasa",
        "CF": "Mið-Afríkulýðveldið",
        "CG": "Kongó-Brazzaville",
        "CH": "Sviss",
        "CI": "Fílabeinsströndin",
        "CK": "Cooks-eyjar",
        "CL": "Síle",
        "CM": "Kamerún",
        "CN": "Kína",
        "CO": "Kólumbía",
        "CP": "Clipperton-eyja",
        "CR": "Kostaríka",
        "CU": "Kúba",
        "CV": "Grænhöfðaeyjar",
        "CW": "Curacao",
        "CX": "Jólaey",
        "CY": "Kýpur",
        "CZ": "Tékkland",
        "DE": "Þýskaland",
        "DJ": "Djíbútí",
        "DK": "Danmörk",
        "


ff;
  caret-color: #1877f2;
}
._44mg ._9ay7 a {
  color: #f02849;
  font-weight: bold;
}
._9ls7 {
  position: relative;
}
._9ls8 {
  background: url(/rsrc.php/v3/yZ/r/je5FEJkU1_K.png);
}
._9ls9 {
  background: url(/rsrc.php/v3/yk/r/swFqSxKYa5M.png);
}
._9lsa {
  border-radius: 50%;
  bottom: -25px;
  height: 28px;
  position: absolute;
  right: -8px;
  width: 28px;
}
._9lsa:hover {
  background-color: rgba(0, 0, 0, 0.05);
}
._9lsa:active {
  background-color: rgba(0, 0, 0, 0.15);
}
._9lsb {
  bottom: 6px;
  height: 16px;
  position: absolute;
  right: 6px;
  width: 16px;
}
._5jb3 {
  background-color: #fff;
  font-size: 13px;
  width: 100%;
}
._5jb3 input {
  height: 22px;
  line-height: 16px;
  padding: 10px 13px;
}
._5jb3 .placeholder {
  padding: 10px 13px;
}
._5jb4 input,
._5jb5 input {
  border: 1px solid #d3d6db;
  font-size: 14px;
  padding: 5px 8px;
  width: 284px;
}
._5jb9 {
  text-align: center;
}
._70g9 {
  text-align: center;
}
._5jb_ {
  height: 10px;
}
._5jc7 {
  font-size: 14px;
  margin-bottom: 8px;
  margin-top: 16px;
  padding: 0 16px;
  width: 252px;
}
.menu_login_container table tr {
  vertical-align: top;
}
.menu_login_container table tr td {
  padding: 0 0 0 14px;
}
.new_header_style.menu_login_container table tr td {
  padding: 0 0 0 12px;
}
.menu_login_container .html7magic {
  padding-bottom: 4px;
}
.menu_login_container .inputtext,
.menu_login_container .inputpassword {
  border-color: #1d2a5b;
  margin: 0;
  width: 142px;
}
.menu_login_container .login_form_label_field label,
.menu_login_container .login_form_label_field a {
  color: #9cb4d8;
  font-weight: normal;
}
.menu_login_container .login_form_label_field {
  padding-top: 4px;
}
.menu_login_container .html7magic label {
  color: #fff;
  font-weight: normal;
  padding-left: 1px;
}
#facebook .tetra_fonts .html7magic label {
  font-family: SFProText-Medium, Helvetica, Arial, sans-serif;
}
#facebook .tetra_fonts .login_form_input_box {
  font-family: SFProText-Regular, Helvetica, Arial, sans-serif;
}
#facebook .tetra_fonts .login_form_input_box::-webkit-input-placeholder {
  color: #8d949e;
}
#facebook .tetra_fonts .login_form_login_button input {
  font-family: SFProText-Bold, Helvetica, Arial, sans-serif;
  font-weight: bold;
}
#facebook .tetra_fonts .login_form_label_field a {
  color


_SCRIPT_NONCE,
            headerMapWithCSP.get(HttpClient.HEADER_CSP))

        // Verify CSP header with script-src nonce followed by object-src nonce
        headerMapWithCSP.set(HttpClient.HEADER_CSP, HEADER_VALUE_WITH_SCRIPT_NONCE_AND_OBJECT_NONCE)
        returnNonce = testServerResponseProcessor.updateCspHeaderWrapper(headerMapWithCSP)
        assertEquals(SCRIPT_NONCE, "$NONCE_PREFIX-$returnNonce")
        assertEquals(HEADER_VALUE_WITH_SCRIPT_NONCE_AND_OBJECT_NONCE,
            headerMapWithCSP.get(HttpClient.HEADER_CSP))
    }
}
// Copyright 2024, Addhen Ltd and the k-location project contributors
// SPDX-License-Identifier: Apache-2.0

package com.addhen.klocation

/**
 * Represents the various states of a location request.
 *
 * This sealed interface encapsulates all possible outcomes when requesting location information,
 * including success states, error conditions, and system status indicators.
 */
public sealed interface LocationState {
  /**
   * Indicates that the application lacks the necessary permissions to access location services.
   *
   * This state is returned when the user has not granted location permissions to the app.
   * To resolve this, prompt the user to grant location permissions in the app settings.
   */
  public data object PermissionMissing : LocationState

  /**
   * Indicates that the device's location services are disabled.
   *
   * This state is returned when the user has turned off location services at the device level.
   * To resolve this, guide the user to enable location services in the device settings.
   */
  public data object LocationDisabled : LocationState

  /**
   * Indicates that no network connection is available for location services.
   *
   * This state is returned when the device cannot connect to network services required for
   * certain location features. To resolve this, ensure the device has an active internet connection.
   */
  public data object NoNetworkEnabled : LocationState

  /**
   * Represents a successfully retrieved location.
   *
   * @param T The type of the location object, which may vary depending on the platform.
   * @param libLocation The platform specific location object, which may be null if no location data is available.
   */
  public data class CurrentLocation<out T>(val libLocation: T?) : LocationState

  /**
   * Represents an error that occurred during the location request process.
   *
   * @param cause The [Throwable] that caused the error, providing details about what went wrong.
   */
  public data class Error(val cause: Throwable) : LocationState
}
// Copyright 2024, Addhen Ltd and the kanalytics project contributors
// SPDX-License-Identifier: Apache-2.0

plugins {
  id("convention.plugin.android.application")
  id("convention.plugin.kotlin.android")
  id("convention.plugin.compose")
  alias(libs.plugins.kotlin.android)
  alias(libs.plugins.android.application)
  alias(libs.plugins.androidx.baselineprofile)
}

android {
  namespace = "com.addhen.kanalytics.sample.android"

  defaultConfig {
    versionCode = 1
    versionName = "1.0"
    applicationId = "com.addhen.kanalytics.sample.android"

    testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
  }

  buildTypes {
    release {
      isMinifyEnabled = false
      isShrinkResources = false
      signingConfig = signingConfigs["debug"]
      proguardFiles(
        "proguard-rules.pro",
        getDefaultProguardFile("proguard-android-optimize.txt"),
      )
    }
  }

  packaging {
    resources.excludes += setOf(


element.
      ///
      // ReSharper disable once UnusedMember.Global
      internal virtual void ResetIsTrackingProperties()
      {
         IsCollectionClassTrackingPropertyHandler.Instance.ResetValue(this);
         IsTargetImplementNotifyTrackingPropertyHandler.Instance.ResetValue(this);
         IsTargetAutoPropertyTrackingPropertyHandler.Instance.ResetValue(this);
         // same with other tracking properties as they get added
      }

      internal sealed partial class SourceMultiplicityPropertyHandler
      {
         /// Called after property value has been changed.
         /// <param name="element">Element which owns the property.</param>
         /// <param name="oldValue">Old value of the property.</param>
         /// <param name="newValue">New value of the property.</param>
         protected override void OnValueChanged(Association element, Multiplicity oldValue, Multiplicity newValue)
         {
            base.OnValueChanged(element, oldValue, newValue);
            if (!element.Store.InUndoRedoOrRollback)
               element.Store.DomainDataDirectory.GetDomainProperty(SourceMultiplicityDisplayDomainPropertyId).NotifyValueChange(element);
         }
      }

      internal sealed partial class TargetMultiplicityPropertyHandler
      {
         /// Called after property value has been changed.
         /// <param name="element">Element which owns the property.</param>
         /// <param name="oldValue">Old value of the property.</param>
         /// <param name="newValue">New value of the property.</param>
         protected override void OnValueChanged(Association element, Multiplicity oldValue, Multiplicity newValue)
         {
            base.OnValueChanged(element, oldValue, newValue);
            if (!element.Store.InUndoRedoOrRollback)
               element.Store.DomainDataDirectory.GetDomainProperty(TargetMultiplicityDisplayDomainPropertyId).NotifyValueChange(element);
         }
      }
   }
}


pack("<IIIIAA",
    unique_ptr,
    #srv_name_utf16/2,
    0,
    #srv_name_utf16/2,
    srv_name_utf16,
    get_pad(srv_name_utf16, 4))
  --[in, unique, string] LPCSTR pszZone,
  if(zone == nil) then
    req_blob = bin.pack("<I", 0x00000000)
  else
    zone_ascii = zone .. '\0'
    req_blob = req_blob .. bin.pack("<IIIIAA",
      unique_ptr + 1,
      #zone_ascii,
      0,
      #zone_ascii,
      zone_ascii,
      get_pad(zone_ascii, 4))
  end
  --[in, unique, string] LPCSTR pszOperation,
  operation_ascii = operation .. '\0'
  req_blob = req_blob .. bin.pack("<IIIIAA",
    unique_ptr+2,
    #operation_ascii,
    0,
    #operation_ascii,
    operation_ascii,
    get_pad(operation_ascii, 4))

  local call_result
  stdnse.debug(
    DNSSERVER_DEBUG_LVL,
    "DNSSERVER_Query: Calling...")
  status, call_result = call_function(
    smbstate,
    DNSSERVER_Opnums['R_DnssrvQuery'],
    req_blob)
  --sanity check
  if(status == false) then
    stdnse.debug(
      DNSSERVER_DEBUG_LVL,
      "DNSSERVER_Query: Call function failed: %s",
      call_result)
    return false, call_result
  end
  stdnse.debug(
    DNSSERVER_DEBUG_LVL,
    "DNSSERVE


,
        ReadOnlySpan<T> close,
        Core.CandleSettingType set,
        int idx) where T : IFloatingPointIeee754<T> => Core.CandleSettings.Get(set).RangeType switch
    {
        Core.CandleRangeType.RealBody => RealBody(close, open, idx),
        Core.CandleRangeType.HighLow => HighLowRange(high, low, idx),
        Core.CandleRangeType.Shadows => UpperShadow(high, close, open, idx) + LowerShadow(close, open, low, idx),
        _ => T.Zero
    };

    public static T CandleAverage<T>(
        ReadOnlySpan<T> open,
        ReadOnlySpan<T> high,
        ReadOnlySpan<T> low,
        ReadOnlySpan<T> close,
        Core.CandleSettingType set,
        T sum,
        int idx) where T : IFloatingPointIeee754<T>
    {
        var candleAveragePeriod = T.CreateChecked(CandleAveragePeriod(set));
        var candleFactor = T.CreateChecked(Core.CandleSettings.Get(set).Factor);
        var rangeTypeFactor = Core.CandleSettings.Get(set).RangeType == Core.CandleRangeType.Shadows ? T.CreateChecked(2) : T.One;

        return candleFactor * (!T.IsZero(candleAveragePeriod)
            ? sum / candleAveragePeriod
            : CandleRange(open, high, low, close, set, idx)) / rangeTypeFactor;
    }

    public static bool RealBodyGapUp<T>(
        ReadOnlySpan<T> open,
        ReadOnlySpan<T> close,
        int idx2,
        int idx1) where T : IFloatingPointIeee754<T> => T.Min(open[idx2], close[idx2]) > T.Max(open[idx1], close[idx1]);

    public static bool RealBodyGapDown<T>(
        ReadOnlySpan<T> open,
        ReadOnlySpan<T> close,
        int idx2,
        int idx1) where T : IFloatingPointIeee754<T> => T.Max(open[idx2], close[idx2]) < T.Min(open[idx1], close[idx1]);

    public static bool CandleGapUp<T>(
        ReadOnlySpan<T> low,
        ReadOnlySpan<T> high,
        int idx2,
        int idx1) where T : IFloatingPointIeee754<T> => low[idx2] > high[idx1];

    public static bool CandleGapDown<T>(
        ReadOnlySpan<T> low,
        ReadOnlySpan<T> high,
        int idx2,
        int idx1) where T : IFloatingPointIeee754<T> => high[idx2] < low[idx1];
}

/// <summary>
/// Provides a Candles layer for accessing candlestick patterns functions.
/// </summary>
public static partial class Candles;


31.html#a4ea5fd150b537b5b447aaf608f5cc575',1,'cutlass::gemm::warp::MmaSimtTileIterator< Shape_, Operand::kC, Element_, layout::ColumnMajor, Policy_ >::MmaSimtTileIterator(TensorRef const &ref, int lane_id)'],['../classcutlass_1_1gemm_1_1warp_1_1MmaSimtTileIterator_3_01Shape___00_01Operand_1_1kC_00_01Element_8f92ea79e85febb67169c4b2d94b1b20.html#a4c81d469ef0aff493fb62e04af27fb50',1,'cutlass::gemm::warp::MmaSimtTileIterator< Shape_, Operand::kC, Element_, layout::RowMajor, Policy_ >::MmaSimtTileIterator()'],['../classcutlass_1_1gemm_1_1warp_1_1MmaSimtTileIterator_3_01Shape___00_01Operand_1_1kC_00_01Element_8f92ea79e85febb67169c4b2d94b1b20.html#a29f407752c1e0d5a44b691a31b380112',1,'cutlass::gemm::warp::MmaSimtTileIterator< Shape_, Operand::kC, Element_, layout::RowMajor, Policy_ >::MmaSimtTileIterator(TensorRef const &ref, int lane_id)'],['../classcutlass_1_1gemm_1_1warp_1_1MmaSimtTileIterator_3_01Shape___00_01Operand_1_1kA_00_01Element_f0ce904a9294556f15e1cc9cf7c99a93.html#a264541432a58abbad656747ba97c5834',1,'cutlass::gemm::warp::MmaSimtTileIterator< Shape_, Operand::kA, Element_, layout::ColumnMajorInterleaved< 4 >, Policy_, PartitionsK, PartitionGroupSize >::MmaSimtTileIterator()'],['../classcutlass_1_1gemm_1_1warp_1_1MmaSimtTileIterator_3_01Shape___00_01Operand_1_1kA_00_01Element_f0ce904a9294556f15e1cc9cf7c99a93.html#adb1421db81888452d072974856a08884',1,'cutlass::gemm::warp::MmaSimtTileIterator< Shape_, Operand::kA, Element_, layout::ColumnMajorInterleaved< 4 >, Policy_, PartitionsK, PartitionGroupSize >::MmaSimtTileIterator(TensorRef ref, int lane_id)'],['../classcutlass_1_1gemm_1_1warp_1_1MmaSimtTileIterator_3_01Shape___00_01Operand_1_1kB_00_01Element_ada156b62fcbdce47009c5bf1321c92c.html#a12189641e509bb936d0539a6a3c5ef1e',1,'cutlass::gemm::warp::MmaSimtTileIterator< Shape_, Operand::kB, Element_, layout::RowMajorInterleaved< 4 >, Policy_, PartitionsK, PartitionGroupSize >::MmaSimtTileIterator()'],['../classcutlass_1_1gemm_1_1warp_1_1MmaSimtTileIterator_3_01Shape___00_01Operand_1_1kB_00_01Element_ada156b62fcbdce47009c5bf1321c92c.html#a52d02032389e3a3dfc7780f8c27ed621',1,'cutlass::gemm::warp::MmaSimtTileIterator< Shape_, Operand::kB, Element_, layout::RowMajorInterleaved< 4 >, Policy_, PartitionsK, PartitionGroupSize >::MmaSimtTileIterator(TensorRef ref, int lane_id)']]],
  ['mmasi


addresses`,
        headers: { Authorization: `Bearer ${addressData.refreshToken}` }
    });
   const favoriteAddress = data;
   commit("pushToFavorites", favoriteAddress)
   dispatch("userLogedFromApi", objectForMutation)
    },
    async deleteInFavorites({ commit, dispatch }: ActionContext<State, State>, addressData:any){
      const addressDataObject = {
        userId: addressData.userId,
      }
      const objectForMutation = {
        _id: addressData.userId,
        token: addressData.refreshToken,
        refreshToken: addressData.refreshToken
      }
      const { data } = await axios({
        method: 'DELETE',
        data: addressDataObject,
        url: `http://localhost:5000/mooversApi/addresses/${addressData.id}`,
        headers: { Authorization: `Bearer ${addressData.refreshToken}` }
    });
    const addressToDelete = data
    dispatch("userLogedFromApi", objectForMutation)
    commit("popFromFavorites", addressToDelete)
    },
    async createTrip({ commit }: ActionContext<State, State>, tripData:any){
      const tripDataObject = {
        userId: tripData.userId,
        pickUpAddress: tripData.pickUpAddress,
        destinationAddress: tripData.destinationAddress,
        house:tripData.house,
        thingsToMove:tripData.thingsToMove
      }
      const { data } = await axios({
        method: 'POST',
        data: tripDataObject,
        url: `http://localhost:5000/mooversApi/trips`,
        headers: { Authorization: `Bearer ${tripData.refreshToken}` }
    });
    const cartToCompile = {
        user:tripData.userId,
        trip: data._id,
        hours: tripData.hours,
        rate:tripData.rate,
        total:tripData.total,
        refreshToken: tripData.refreshToken
    }
   const currentTrip = data;
   commit("pushToTrips", currentTrip)
   commit("compileCart", cartToCompile)
    },
    async createCart({ dispatch }: ActionContext<State, State>, cartData:any){
      const cartToCreate = {
        user:cartData.user,
        trip: cartData.trip,
        hours: cartData.hours,
        rate:cartData.rate,
        total:cartData.total
    }
      const { data } = await axios({
        method: 'POST',
        data: cartToCreate,
        url: `http://localhost:5000/mooversApi/carts`,
        headers: { Authorization: `Bearer ${cartData.refreshToken}` }
    });

   const currentCart = data;
   currentCart.refreshToken = cartData.refreshToken
   dispatch("getOneCart", currentCart)

    },
    async getOneCart({ commit }: ActionContext<State, State>, cartData:any){

      const { data } = await axios({
        method: 'GET',
        url: `http://localhost:5000/mooversApi/carts/${cartData._id}`,
        headers: { Authorization: `Bearer ${cartData.refreshToken}` }
    });

   const currentCart = data;
   commit("loadCartFromApi", currentCart)

    },

}
export default actions; import Plateau from "../lib/Plateau";
import Rover from "../lib/Rover";

describe("Rover", () => {
  let rover: Rover;
  beforeAll(() => {
    rover = new Rover(new Plateau(5, 5), { x: 0, y:


W(operator>(const ESetIterator &a, const ESetIterator &b));

/// Inequality test for ESetIterator objects.
inline bool
operator>(const ESetIterator &a, const ESetIterator &b) XAPIAN_NOEXCEPT
{
    return b < a;
}

inline bool
XAPIAN_NOTHROW(operator>=(const ESetIterator &a, const ESetIterator &b));

/// Inequality test for ESetIterator objects.
inline bool
operator>=(const ESetIterator &a, const ESetIterator &b) XAPIAN_NOEXCEPT
{
    return !(a < b);
}

inline bool
XAPIAN_NOTHROW(operator<=(const ESetIterator &a, const ESetIterator &b));

/// Inequality test for ESetIterator objects.
inline bool
operator<=(const ESetIterator &a, const ESetIterator &b) XAPIAN_NOEXCEPT
{
    return !(b < a);
}

/** Return ESetIterator @a it incremented by @a n positions.
 *
 *  If @a n is negative, decrements by (-n) positions.
 */
inline ESetIterator
operator+(ESetIterator::difference_type n, const ESetIterator& it)
{
    return it + n;
}

// Inlined methods of ESet which need ESetIterator to have been defined:

inline ESetIterator
ESet::begin() const {
    return ESetIterator(*this, size());
}

inline ESetIterator
ESet::end() const {
    // Decrementing the result of end() needs to work, so we must pass in
    // *this here.
    return ESetIterator(*this, 0);
}

inline ESetIterator
ESet::operator[](Xapian::doccount i) const {
    return ESetIterator(*this, size() - i);
}

inline ESetIterator
ESet::back() const {
    return ESetIterator(*this, 1);
}

}

#endif // XAPIAN_INCLUDED_ESET_H


フェイスだけの問題ではないことを心に留めておいてください。原文がスペイン語で書かれている場合、「Idioma de la interfaz」という言葉は英語の (「Interface language」) では短くなりますが、マレー語の (「Bahasar pegantar untuk penelusuran」) ではかなり長くなります。さらに、短めの訳文の場合、もしページ上にあまりに多数の空白ができてしまう場合は、大きな問題に発展する可能性もでてきます。

文章の段落を扱う場合、相対的な拡張は小さくなる傾向にありますが、考慮すべき点はまだいくつか残ります。例えば、見せたいものすべてを「ファーストビュー」の範囲に収めることができるでしょうか？アイテムが異なる比率で下方に伸びる場合でも、思い通りに整列させることができるでしょうか？

複雑な要因

翻訳による予測不可能な文字数の変化に加えて、文字レイアウトの管理を複雑にする別の要因があります。

複合名詞

フィンランド語やドイツ語、オランダ語などいくつかの言語では、他の言語では一連の短い単語で構成されていた言葉が巨大な単一の「言葉」に置き換えられます。

例えば、英語の「Input processing features」は、ドイツ語で「Eingabeverarbeitungsfunktionen」のようになります。フォーム入力フィールドの大きさに合わせたり、タブやボタンが多数存在したり、コラム幅が狭いなどの制限がある場合、英語の文字列は折り返すことで簡単に 2 行に分けられますが、ドイツ語では自動的に折り返しすることができず、レイアウトの作成には困難が伴うでしょう。

文字幅

中国語、日本語、韓国語、そしては他のいくつかの言語における書体は、一般にラテン語の書体と比べて複雑です。これは、仮に訳文での文字数が同じか若干少なかったとしても、より長いスペースが水平方向で必要になることを意味します。

例えば英語の「desktop」は日本語で「デスクトップ」になります。日本語での文字数は 1 つ少なくなっていますが、水平方向の必要スペースは長くなります。

文字の高さと行間

非ラテン語の文字は一般に、ラテン語の文字よりも高さがかなり大きくなります。それだけでなく、これらの書体はラテン語の文字よりも大抵、より大きな行間を必要とします。

    <p


        return m_basecircle.Plane.Origin;
      }
    }

    /// <summary>
    /// Gets the axis direction of the cylinder.
    /// </summary>
    /// <since>5.0</since>
    public Vector3d Axis
    {
      get
      {
        return m_basecircle.Plane.ZAxis;
      }
    }

    /// <summary>
    /// Gets the height of the cylinder.
    /// Infinite cylinders have a height of zero, not Double.PositiveInfinity.
    /// </summary>
    /// <since>5.0</since>
    public double TotalHeight
    {
      get
      {
        return m_height2 - m_height1;
      }
    }

    /// <summary>
    /// Gets or sets the start height of the cylinder.
    /// The center of bottom cap is: BasePlane.Origin + Height1 * BasePlane.ZAxis.
    /// </summary>
    /// <since>5.0</since>
    public double Height1
    {
      get { return m_height1; }
      set { m_height1 = value; }
    }

    /// <summary>
    /// Gets or sets the end height of the cylinder.
    /// If the end height equals the start height, the cylinder is
    /// presumed to be infinite.
    /// The center of top cap is: BasePlane.Origin + Height2 * BasePlane.ZAxis.
    /// </summary>
    /// <since>5.0</since>
    public double Height2
    {
      get { return m_height2; }
      set { m_height2 = value; }
    }

    /// <summary>
    /// Gets or sets the radius of the cylinder.
    /// </summary>
    /// <since>6.0</since>
    public double Radius
    {
        get { return m_basecircle.Radius; }
        set { m_basecircle.Radius = value; }
    }

    /// <summary>
    /// Gets or sets the base plane of the cylinder.
    /// </summary>
    /// <since>6.0</since>
    public Plane BasePlane
    {
      get { return m_basecircle.Plane; }
      set { m_basecircle.Plane = value; }
    }
    #endregion

    #region methods

    /// <summary>
    /// Compute the circle at the given elevation parameter.
    /// </summary>
    /// <param name="linearParameter">Height parameter for circle section.</param>
    /// <since>5.0</since>
    [ConstOperation]
    public Circle CircleAt(double linearParameter)
    {
      Circle c = m_basecircle;
      if (linearParameter != 0)
        c.Translate(linearParameter * c.Plane.ZAxis);
      return c;
    }

    /// <summary>
    /// Compute the line at the given angle parameter. This line will be degenerate if the cylinder is infinite.
    /// </summary>
    /// <param name="angularParameter">Angle parameter for line section.</param>
    /// <since>5.0</since>
    [ConstOperation]
    public Line LineAt(double angularParameter)
    {
      Point3d p = m_basecircle.PointAt(angularParameter);
      Vector3d z = m_basecircle.Plane.ZAxis;
      Point3d from = p + m_height1 * z;
      Point3d to = p + m_height2 * z;
      Line line = new Line(from, to);
      return line;
    }

    /// <summary>
    /// Transforms this cylinder. Note that non-similarity preserving transformations
    /// cannot be applied to a cylinder.
    /// </summary>
    /// <param name="xform">Transformation matrix to apply.</param>
    /// <returns>true on success, false on failure.</returns>
    /// <since>8.15</since>
    public bool Transform(Transform xform)
    {
      Circle c = m_basecircle;
      bool rc = c.Transform(x


#else
			$r.translate("error.textEntry.invalid")
		#end

	#end
#end

$r.appendFlexiFormDirtyAndStopKeyboardsEvent("od_${responseIdentifier}")#set($responseIdentifier = $r.responseUniqueId($interaction))
#set($containerId = "qtiworks_id_container_" + $responseIdentifier)
#set($responseValue = $r.getResponseValueAsBase64($interaction.responseIdentifier))
#set($companionResponseValue = $r.getCompanionResponseValue($interaction.responseIdentifier))

<input type="hidden" id="color_value_form">
<input name="qtiworks_presented_${responseIdentifier}" type="hidden" value="1"/>
<input id="op_${responseIdentifier}_png" type="hidden" name="qtiworks_response_64_${responseIdentifier}" #if($responseValue && !$responseValue.isEmpty()) value="data:image/png;base64,$responseValue" #else value="" #end />
<input id="op_${responseIdentifier}_json" type="hidden" name="qtiworks_response_64_${responseIdentifier}" #if($responseValue && !$responseValue.isEmpty()) value='$companionResponseValue' #else value="" #end />

	#if($interaction.getPrompt())

$r.renderPrompt($interaction.getPrompt())

	#end

	#if($r.isTrue($isCorrectionSolution) || $r.isTrue($isSolutionMode))

$r.translate("warning.no.solution")

	#else

		#if($isItemSessionOpen)

				  $r.translate("paint.clear.all")

				<i class="o_ico


_fragment>\n\t#include <alphatest_fragment>\n\t#include <logdepthbuf_fragment>\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\n\t#endif\n}",depth_vert:"#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n}",distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main () {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\tvWorldPosition = worldPosition.xyz;\n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV;\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor


t>(const TRect& v)
{
  return ConvertToGdiplus<Gdiplus::Rect>(v);
}

template <>
inline Gdiplus::RectF gdiplus_cast<Gdiplus::RectF>(const TRect& v)
{
  return ConvertToGdiplus<Gdiplus::RectF>(v);
}

template <>
inline Gdiplus::Color gdiplus_cast<Gdiplus::Color>(const TColor& v)
{
  return ConvertToGdiplus(v, 255);
}

template <>
inline TSize gdiplus_cast<TSize>(const Gdiplus::Size& v)
{
  return ConvertFromGdiplus(v);
}

template <>
inline TSize gdiplus_cast<TSize>(const Gdiplus::SizeF& v)
{
  return ConvertFromGdiplus(v);
}

template <>
inline TPoint gdiplus_cast<TPoint>(const Gdiplus::Point& v)
{
  return ConvertFromGdiplus(v);
}

template <>
inline TPoint gdiplus_cast<TPoint>(const Gdiplus::PointF& v)
{
  return ConvertFromGdiplus(v);
}

template <>
inline TRect gdiplus_cast<TRect>(const Gdiplus::Rect& v)
{
  return ConvertFromGdiplus(v);
}

template <>
inline TRect gdiplus_cast<TRect>(const Gdiplus::RectF& v)
{
  return ConvertFromGdiplus(v);
}

template <>
inline TColor gdiplus_cast<TColor>(const Gdiplus::Color& v)
{
  return ConvertFromGdiplus(v);
}

/// @}

} // OWL namespace

#endif


l/index.html",
			buildTemplateArg("listing", %listing,
			buildTemplateArg("server_address", $pref::Net::BindAddress,
			buildTemplateArg("server_port", $pref::Server::Port,
			buildTemplateArg("server_online", ClientGroup.getCount(),
			buildTemplateArg("server_total", $pref::Server::MaxPlayers,
			buildTemplateArg("sim_time", $Sim::Time,
			buildTemplateArg("current_mission", MissionInfo.name,
			buildTemplateArg("mission_sequence", $MissionSequence,
			buildTemplateArg("code", $socket.responseCode
		))))))))) //No regrets
	), buildTemplateArg("nav",
		parseTemplate("~/tmpl/nav.html")
	)
)));


destacado');
    }

    this.renderer.addClass( elemento , 'destacado' );

    let nuevoElemento = this.renderer.createElement("span");
    this.renderer.setProperty(nuevoElemento, "innerHTML" , " ✅ ");

    this.renderer.appendChild( elemento , nuevoElemento );

    this.renderer.setAttribute(boton, "value", "A viajar ✈");
    this.renderer.removeAttribute(boton, "disabled");

    this.antiguo = elemento;
  }

}
import {
  Item,
  Collection,
  Agile,
  StateObserver,
  EnhancedState,
  CollectionPersistent,
} from '../../../src';
import { LogMock } from '../../helper/logMock';

describe('Item Tests', () => {
  interface ItemInterface {
    id: string;
    name: string;
  }

  let dummyAgile: Agile;
  let dummyCollection: Collection<ItemInterface>;

  beforeEach(() => {
    LogMock.mockLogs();

    dummyAgile = new Agile();
    dummyCollection = new Collection<ItemInterface>(dummyAgile);

    jest.spyOn(Item.prototype, 'addRebuildGroupThatIncludeItemKeySideEffect');

    jest.clearAllMocks();
  });

  it('should create Item (default config)', () => {
    // Overwrite addRebuildGroupThatIncludeItemKeySideEffect once to not call it
    jest
      .spyOn(Item.prototype, 'addRebuildGroupThatIncludeItemKeySideEffect')
      .mockReturnValueOnce(undefined);

    const dummyData = { id: 'dummyId', name: 'dummyName' };
    const item = new Item(dummyCollection, dummyData);

    expect(item.collection()).toBe(dummyCollection);
    expect(
      item.addRebuildGroupThatIncludeItemKeySideEffect
    ).toHaveBeenCalledWith('dummyId');

    expect(item._key).toBe(dummyData[dummyCollection.config.primaryKey]);
    expect(item.isSet).toBeFalsy();
    expect(item.isPlaceholder).toBeFalsy();
    expect(item.initialStateValue).toStrictEqual(dummyData);
    expect(item._value).toStrictEqual(dummyData);
    expect(item.previousStateValue).toStrictEqual(dummyData);
    expect(item.nextStateValue).toStrictEqual(dummyData);
    expect(item.observers['value']).toBeInstanceOf(StateObserver);
    expect(Array.from(item.observers['value'].dependents)).toStrictEqual([]);
    expect(item.observers['value'].key).toBe(
      dummyData[dummyCollection.config.primaryKey]
    );
    expect(item.sideEffects).toStrictEqual({});
    expect(item.computeValueMethod).toBeUndefined();
    expect(item.computeExistsMethod).toBeInstanceOf(Function);
    expect(item.isPersisted).toBeFalsy();
    expect(item.persistent).toBeUndefined();
    expect(item.selectedBy.size).toBe(0);
  });

  it('should create Item (specific config)', () => {
    // Overwrite addRebuildGroupThatIncludeItemKeySideEffect once to not call it
    jest
      .spyOn(Item.prototype, 'addRebuildGroupThatIncludeItemKeySideEffect')
      .mockReturnValueOnce(undefined);

    const dummyData = { id: 'dummyId', name: 'dummyName' };
    const item = new Item(dummyCollection, dummyData, {
      isPlaceholder: true,
    });

    expect(item.collection()).toBe(dummyCollection);
    expect(
      item.addRebuildGroupThatIncludeItemKeySideEffect
    ).toHaveBeenCalledWith('dummyId');

    // Check if State was called with correct parameters
    expect(item._key).toBe(dummyData[dummyCollection.config.primaryKey]);
    expect(item.isSet).toBeFalsy();
    expect(item.isPlaceholder).toBeTruthy();
    expect(item.initialStateValue).toStrictEqual(dummyData);
    expect(item._value).toStrictEqual(dummyData);
    expect(


出：42
 * 解释：加粗的字符串为已经读入的字符，插入符号是当前读取的字符。
 * 第 1 步："42"（当前没有读入字符，因为没有前导空格）
 *         ^
 * 第 2 步："42"（当前没有读入字符，因为这里不存在 '-' 或者 '+'）
 *         ^
 * 第 3 步："42"（读入 "42"）
 *           ^
 * 解析得到整数 42 。
 * 由于 "42" 在范围 [-2^31, 2^31 - 1] 内，最终结果为 42 。
 *
 * 示例 2：
 *
 *
 * 输入：s = "   -42"
 * 输出：-42
 * 解释：
 * 第 1 步："   -42"（读入前导空格，但忽视掉）
 *            ^
 * 第 2 步："   -42"（读入 '-' 字符，所以结果应该是负数）
 *             ^
 * 第 3 步："   -42"（读入 "42"）
 *               ^
 * 解析得到整数 -42 。
 * 由于 "-42" 在范围 [-2^31, 2^31 - 1] 内，最终结果为 -42 。
 *
 *
 * 示例 3：
 *
 *
 * 输入：s = "4193 with words"
 * 输出：4193
 * 解释：
 * 第 1 步："4193 with words"（当前没有读入字符，因为没有前导空格）
 *         ^
 * 第 2 步："4193 with words"（当前没有读入字符，因为这里不存在 '-' 或者 '+'）
 *         ^
 * 第 3 步："4193 with words"（读入 "4193"；由于下一个字符不是一个数字，所以读入停止）
 *             ^
 * 解析得到整数 4193 。
 * 由于 "4193" 在范围 [-2^31, 2^31 - 1] 内，最终结果为 4193 。
 *
 *
 *
 *
 * 提示：
 *
 *
 * 0 <= s.length <= 200
 * s 由英文字母（大写和小写）、数字（0-9）、' '、'+'、'-' 和 '.' 组成
 *
 *
 */

export
// @lc code=start
function myAtoi(s: string): number {
  let status = Status.Begin
  let sign: 1 | -1 = 1
  let whole = 0

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

    if (char === ' ') {
      if (status !== Status.Begin) {
        break
      }
    } else if (char === '+' || char === '-') {
      if (status !== Status.Begin) {
        break
      }
      status = Status.Sign
      sign = char === '+' ? 1 : -1
    } else if (isDigit(char)) {
      status = Status.Whole
      let willExceed = false;
      [whole, willExceed] = add(sign, whole, char.charCodeAt(0) - CHAR_CODE_0)
      if (willExceed) break
    } else {
      break
    }
  }

  return sign * whole
}

const enum Status {
  Begin,
  Sign,
  Whole,
}

const MAX_POS_ABS = 2 ** 31 - 1
const MAX_NEG_ABS = 2 ** 31

function add(sign: 1 | -1, curr: number, digit: number): [number, boolean] {
  const maxWhole = sign > 0 ? MAX_POS_ABS : MAX_NEG_ABS

  if (curr >= (maxWhole - digit) / 10) {
    return [maxWhole, true]
  }
  return [curr * 10 + digit, false]
}

const CHAR_CODE_0 = '0'.charCodeAt(0)
const CHAR_CODE_9 = '9'.charCodeAt(0)

function isDigit(char: string) {
  const charCode = char.charCodeAt(0)
  return charCode >= CHAR_CODE_0 && charCode <= CHAR_CODE_9
}
// @lc code=end
import path from 'path';
import fs from 'fs';
import { Configuration } from 'webpack';

export interface FileInfo {
  filePath?: string;
  type?: strin


): A gay, Jewish journalist is attending a press briefing - what's new? https://twitter.com/thehill/status/827563309868146688
* [ 3 February 2017](https://web.archive.org/web/20190807040732/https://twitter.com/DrDavidDuke/status/827564777081823234): Dr. Duke and Mark Collett on Why the Jewish Establishment Hates Fascism!…  http://davidduke.com/dr-duke-and-mark-collett-on-why-the-jewish-establishment-hates-fascism-fascism-is-actually-nationalism-the-fasces-is-an-honored-symbol-of-america/  pic.twitter.com/Lz10wglkGK
* [ 3 February 2017](https://web.archive.org/web/20190807040733/https://twitter.com/DrDavidDuke/status/827564591030878210): Jewish privilege is alive and well -> anti-White/Christian offenses are welcome. https://twitter.com/mayoroflondon/status/827093096571817984
* [ 3 February 2017](https://web.archive.org/web/20190807040733/https://twitter.com/DrDavidDuke/status/827547819720458242): How nice.  https://twitter.com/sahouraxo/status/827547201081602048
* [ 3 February 2017](https://web.archive.org/web/20190807040733/https://twitter.com/DrDavidDuke/status/827544601825308672): http://www.youtube.com/watch?v=Zw9EhjyU3JU&t=211s  http://davidduke.com/56124-2/
* [ 3 February 2017](https://web.archive.org/web/20190807040734/https://twitter.com/DrDavidDuke/status/827534104975532032): Boycott? Boycott......   #BoycottNordstrom  pic.twitter.com/vXOj1ZTwA3
* [ 3 February 2017](https://web.archive.org/web/20190807040735/https://twitter.com/DrDavidDuke/status/827527263533092864): Who could it be?   #AmericaFirst  pic.twitter.com/Y3hZh6saF6
* [ 3 February 2017](https://web.archive.org/web/20190807040735/https://twitter.com/DrDavidDuke/status/827520914849947648): Law & Order: Coming soon...... pic.twitter.com/88cVHWMmHM
* [ 3 February 2017](https://web.archive.org/web/20190807040735/https://twitter.com/DrDavidDuke/status/827519919289991168): Migrants committed 142,500 crimes in Germany during the first six months of 2016 -> Never Forget! http://www.dailymail.co.uk/news/article-3893436/Angela-Merkel-pressure-refugee-policy-revealed-migrants-committed-142-500-crimes-Germany-six-months-2016.html#ixzz4XcOaA19A
* [ 3 February 2017](https://web.archive.org/web/20190807040735/https://twitter.com/DrDavidDuke/status/827519452807823360): 'Jewish Supremacists' can't grasp the idea of  #AmericaFirst , they've become far too comfortable. https://twitter.com/marklevinshow/status/827320918364000257
* [ 3 February 2017](https://web.archive.org/web/20190807040735/https://twitter.com/DrDavidDuke/status/827505614217740288): Let's not forget, Iran wants to destroy the Sunni Wahabist ISIS as much as, if not more, than anyone - their forces are on the front lines. https://twitter.com/jzarif/status/827483992630902784
* [ 3 February 2017](https://web.archive.org/web/20190807040736/https://twitter.com/DrDavidDuke/status/827493381106458624): In 2017 common sense = "White


 cannot convert as basic type	*/
		pushop (&o);
		paramset (pp, field);
	    }

	    nscan_val++;
	}

	/* If we broke out of the above loop because of an unsuccessful
	 * conversion, we must pop the remaining unused operands off the stack.
	 */
	while (--nargs >= 0)
	    popop();

	o.o_type = OT_INT;
	o.o_val.v_i = nscan_val;
	pushop (&o);
}

/* CL_SCANF -- Formatted scan.  Like SCAN except that a C-scanf like format
 * statement is used to decode the input text.
 */
void
cl_scanf (char *format, int nargs, char *input)
{
	int	nscan_val, eoftst, n;
	char	*pk, *t, *p, *f;
	struct	operand o;
	char	buf[SZ_LINE];
	char	*v[MAXARGS];
	struct	param *pp;

	eoftst = 0;

	/* Fill buf with the line to be scanned.
	 */
	if (strcmp (input, "stdin") == 0) {
	    /* Read from the standard input (SCANF).
	     */
	    if (fgets (buf, SZ_LINE, currentask->t_stdin) == NULL)
		eoftst++;
	    else
		lentst (buf);
	    /* First arg is an output param, not source, so increment nargs. */
	    nargs++;

	} else {
	    /* Get source name from first operand (FSCANF).
	     */
	    o = popop();

	    if (!strcmp (o.o_val.v_s, "stdin") ||
		!strcmp (o.o_val.v_s, "STDIN")) {

		if (fgets (buf, SZ_LINE, currentask->t_stdin) == NULL)
		    eoftst++;
		else
		    lentst (buf);

	    } else {
		breakout (o.o_val.v_s, &pk, &t, &p, &f);
		pp = paramsrch (pk, t, p);
		paramget (pp, *f);
		opcast (OT_STRING);
		o = popop();

		if (pp->p_flags & P_LEOF)
		    eoftst++;
		else {
		    if (opundef (&o)) {
			query (pp);		/* pushes op */
			opcast (OT_STRING);
			o = popop();
		    }
		    strncpy (buf, o.o_val.v_s, SZ_LINE);
		}
	    }
	}

	/* Check for EOF. */
	if (eoftst) {
	    o.o_type = OT_INT;
	    o.o_val.v_i = CL_EOF;
	    while (nargs-- > 0)
		popop();		/* flush op stack		*/
	    pushop (&o);
	    return;
	}

	/* Process the stacked operands and build the argument list for
	 * the scanf call.  Each argument pointer points directly to the
	 * stored parameter value in the parameter descriptor.
	 */
	for (n=0;  --nargs >= 0;  n++) {
	    /* Stacked operand is parameter name. */
	    o = popop();
	    breakout (o.o_val.v_s, &pk, &t, &p, &f);
	    pp = paramsrch (pk, t, p);

	    /* Add address of parameter value to argument list.  First set
	     * the value with PARAMSET, to make sure that the pset knows
	     * that the value has been modified.
	     */
	    switch (pp->p_valo.o_type & OT_BASIC) {
	    case OT_BOOL:
		o = makeop ("yes", OT_BOOL);  pushop (&o);
		paramset (pp, FN_VALUE);
		v[n] = (char *) &pp->p_valo.o_val.v_i;
		break;
	    case OT_INT:
		o = makeop ("0", OT_INT);  pushop (&o);
		paramset (pp, FN_VALUE);
		v[n] = (char *) &pp->p_valo.o_val.v_i;
		break;
	    case OT_REAL:
		o = makeop ("0", OT_REAL);  pushop (&o);
		paramset (pp, FN_VALUE);
		v[n] = (char *) &pp->p_valo.o_val.v_r;
		break;
	    case OT_STRING:
		o = makeop ("", OT_STRING);  pushop (&o);
		paramset (pp, FN_VALUE);
		v[n] = (char *) pp->p_valo.o_val.v_s;
		break;
	    default:
		cl_error (E_UERR, "scanf: cannot scan into %s\n", o.o_val.v_s);
	    }
	}

	/* Perform the scan. */
	nscan_val = sscanf (buf, format,
	    v[ 0], v[ 1], v[ 2], v[ 3], v[ 4], v[ 5], v[ 6], v[ 7],
	    v[ 8], v[ 9], v[10], v[11], v[12], v[13], v[14], v[15],
	    v[16], v[17], v[18], v[19], v[20], v[21], v[22], v[23],
	    v[24], v[25], v[26], v[27], v[28], v[29], v[30], v[31]);

	o.o_type = OT_INT;
	o.o_val.v_i = nscan_val;
	pushop (&o);
}

/* GET_NSCANVAL -- Return the number of items successfully scanned in the
 * last call to SCAN.
 */
int
get_nscanval (void)
{
	return (nscan_val);
}

/* LENTST -- Test that the scan line just read did not overflow the line
 * buffer.
 */
void
lentst (char *buf)
{
	char	*bp;

	bp = strchr (buf, '\n');
	if (bp != NULL)
	    *bp = '\0';
	else
	    cl_error (E_UERR, "scan limited to %d char lines", SZ_LINE-1);
}


ync {
    monetPalette = await DynamicColorPlugin.getCorePalette();
    if (Platform.isWindows) {
      windowsAccentColor = await DynamicColorPlugin.getAccentColor();
    }
  }

  final oledDarkTheme = FlexColorScheme(
    textTheme: Typography.englishLike2021.merge(Typography.whiteMountainView),
    colorScheme: ColorScheme.fromSeed(
      seedColor: Colors.blue,
      background: Colors.black,
      error: Colors.red,
      brightness: Brightness.dark,
    ),
    useMaterial3: true,
  ).toTheme.copyWith(splashFactory: InkSparkle.splashFactory, extensions: [
    BubbleColors(
      iMessageBubbleColor: HexColor("1982FC"),
      oniMessageBubbleColor: Colors.white,
      smsBubbleColor: HexColor("43CC47"),
      onSmsBubbleColor: Colors.white,
      receivedBubbleColor: HexColor("323332"),
      onReceivedBubbleColor: Colors.white,
    ),
    BubbleText(
      bubbleText: Typography.englishLike2021.bodyMedium!.copyWith(
        fontSize: 15,
        height: Typography.englishLike2021.bodyMedium!.height! * 0.85,
        color: Colors.white,
      ),
    ),
  ]);

  final nordDarkTheme = FlexColorScheme(
    textTheme: Typography.englishLike2021.merge(Typography.whiteMountainView),
    colorScheme: ColorScheme.fromSwatch(
      primarySwatch: createMaterialColor(HexColor("5E81AC")),
      accentColor: HexColor("88C0D0"),
      backgroundColor: HexColor("3B4252"),
      cardColor: HexColor("4C566A"),
      errorColor: Colors.red,
      brightness: Brightness.dark,
    ).copyWith(
      primaryContainer: HexColor("49688e"),
      outline: Colors.grey,
    ),
    useMaterial3: true,
  ).toTheme.copyWith(splashFactory: InkSparkle.splashFactory, extensions: [
    BubbleText(
      bubbleText: Typography.englishLike2021.bodyMedium!.copyWith(
        fontSize: 15,
        height: Typography.englishLike2021.bodyMedium!.height! * 0.85,
      ),
    ),
  ]);

  final whiteLightTheme = FlexColorScheme(
    textTheme: Typography.englishLike2021.merge(Typography.blackMountainView),
    colorScheme: ColorScheme.fromSeed(
      seedColor: Colors.blue,
      background: Colors.white,
      surfaceVariant: HexColor('F3F3F6'),
      error: Colors.red,
      brightness: Brightness.light,
    ),
    useMaterial3: true,
  ).toTheme.copyWith(splashFactory: InkSparkle.splashFactory, extensions: [
    BubbleColors(
      iMessageBubbleColor: HexColor("1982FC"),
      oniMessageBubbleColor: Colors.white,
      smsBubbleColor: HexColor("43CC47"),
      onSmsBubbleColor: Colors.white,
      receivedBubbleColor: HexColor("e9e9e8"),
      onReceivedBubbleColor: Colors.black,
    ),
    BubbleText(
      bubbleText: Typography.englishLike2021.bodyMedium!.copyWith(
        fontSize: 15,
        height: Typography.englishLike2021.bodyMedium!.height! * 0.85,
      ),
    ),
  ]);

  List<ThemeStruct> get default


athena::params::Param::cbor_encode($e);
            )*
            athena::params::cbor_encode_end()
        }
    };
}
// Copyright (c) 2019 E.S.R.Labs. All rights reserved.
//
// NOTICE:  All information contained herein is, and remains
// the property of E.S.R.Labs and its suppliers, if any.
// The intellectual and technical concepts contained herein are
// proprietary to E.S.R.Labs and its suppliers and may be covered
// by German and Foreign Patents, patents in process, and are protected
// by trade secret or copyright law.
// Dissemination of this information or reproduction of this material
// is strictly forbidden unless prior written permission is obtained
// from E.S.R.Labs.
use anyhow::{anyhow, Result};
use crossbeam_channel as cc;
use indexer_base::{
    chunks::{Chunk, ChunkFactory, ChunkResults},
    error_reporter::*,
    progress::{IndexingProgress, ProgressReporter},
    timedline::*,
    utils,
};
use processor::parse::{line_to_timed_line, lookup_regex_for_format_str};
use regex::Regex;
use serde::{Deserialize, Serialize};
use std::{
    fmt::Debug,
    fs::{self, File},
    io::{BufRead, BufReader, BufWriter, Read, Write},
    iter::{Iterator, Peekable},
    path::{Path, PathBuf},
};
use tokio_stream::Stream;

#[derive(Serialize, Deserialize, Debug)]
pub struct FileMergeOptions {
    /// Path to the file to merge
    pub path: String,
    /// Offset in ms, this will be added to each posix timestamp
    pub offset: Option<i64>,
    /// If a year is provided and if no year was detected, this is what we use
    pub year: Option<i32>,
    /// An identifier string for the file
    pub tag: String,
    /// how we interpret the date string in each line
    pub format: String,
}

pub fn read_merge_options(
    f: &mut File,
    relative_path: Option<impl AsRef<Path>>,
) -> Result<Vec<FileMergeOptions>> {
    let mut contents = String::new();
    f.read_to_string(&mut contents)?;

    let v: Vec<FileMergeOptions> = serde_json::from_str(&contents[..])?;
    match relative_path {
        Some(relative) => Ok(v
            .into_iter()
            .map(|option| FileMergeOptions {
                path: relative.as_ref().join(option.path).to_string_lossy().into(),
                ..option
            })
            .collect()),
        None => Ok(v),
    }
}

#[allow(dead_code)]
pub struct FileLogEntryProducer {
    timed_line_iterator: TimedLineIter,
}
#[allow(dead_code)]
impl FileLogEntryProducer {
    pub(crate) fn new(
        read_from: File,
        tag: String,
        regex: Regex,
        year: Option<i32>,
        time_offset: Option<i64>,
        current_line_nr: usize,
    ) -> FileLogEntryProducer {
        let iter = TimedLineIter::new(read_from, tag, regex, year, time_offset, current_line_nr);
        FileLogEntryProducer {
            timed_line_iterator: iter,
        }
    }
}

impl Stream for FileLogEntryProducer {
    type Item = Result<Option<TimedLine>>;
    fn poll_next(
        mut self: std::pin::Pin<&mut Self>,
        _cx: &mut std::task::Context,
    ) -> core::task::Poll<Option<Self::Item>> {
        let next = self.timed_line_iterator.next();
        match next {
            Some(msg) => core::task::Poll::Ready(Some(Ok(Some(msg)))),
            None => core::task::Poll::Ready(Some(Err(anyhow!("no more message")))),
        }
    }
}

pub struct TimedLineIter {
    reader: BufReader<File>,
    tag: String,
    regex: Regex,
    year: Option<i32>,
    time_offset


{
      .m-affiliatesDescriptionMethod__underline {
        background-color: #6d28d9;
      }
    }

    &.m-affiliatesDescription__method--affiliateReferral {
      padding-bottom: $spacing6;
      .m-affiliatesDescriptionMethod__underline {
        background-color: #3b82f6;
      }
    }

    &.m-affiliatesDescription__method--creatorReferral {
      .m-affiliatesDescriptionMethod__underline {
        background-color: #93c5fd;
      }
    }
  }
  .m-affiliatesDescriptionInvite {
    &__title {
      display: block;
      @include heading2Bold;
      margin: 0;
      padding: $spacing8 0 $spacing4;
    }
    &__description {
      @include body2Regular;
      @include m-theme() {
        color: themed($m-textColor--secondary);
      }
      margin: 0;
      padding: 0 0 $spacing4;
    }
  }
  ::ng-deep m-button.m-affiliatesDescriptionInvite__button {
    display: block;
    margin-right: 0;
    width: 100%;
    .m-button {
      width: 100%;
    }
  }
}
@import 'defaults.scss';

$avatarWidth: 220px;

:host {
  .m-tenantFeaturedGroupCards__title {
    text-align: center;
    font-family: Inter;
    font-size: 54px;
    font-style: normal;
    font-weight: 900;
    line-height: 58.8px;
    letter-spacing: -1.08px;
    margin: $spacing24 0 $spacing10 0;

    @media screen and (max-width: $max-mobile) {
      font-size: 40px;
    }

    @include m-theme() {
      color: themed($m-bgColor--primaryInverted);
    }
  }

  .m-tenantFeaturedGroupCards__container {
    display: flex;
    flex-flow: row wrap;
    justify-content: center;
    gap: $spacing6 $spacing3;
    margin: $spacing20 $spacing30;

    @media screen and (max-width: $max-mobile) {
      margin: $spacing5 $spacing8;
    }

    .m-tenantFeaturedGroupCard {
      flex: 1;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: flex-start;
      min-width: 380px;
      max-width: 380px;
      border-radius: 15px;
      padding: $spacing10;
      box-sizing: border-box;

      @include m-theme() {
        background-color: themed($m-bgColor--secondary);
      }

      @media screen and (max-width: $max-mobile) {
        min-width: unset;
        width: 100%;
        flex: unset;
      }

      ::ng-deep minds-avatar {
        cursor: pointer;

        &:hover {
          opacity: 0.8;
        }

        .minds-avatar {
          border-radius: 50%;
          height: $avatarWidth;
          width: $avatarWidth;
          min-height: $avatarWidth;
          min-width: $avatarWidth;
          background-size: cover;
          margin: 0;

          @media screen and (max-width: $max-mobile) {
            height: 160px;
            width: 160px;
            min-height: 160px;
            min-width: 160px;
          }

          @include m-theme() {
            border: 1px solid themed($m-borderColor--primary);
          }
        }
      }

      .m-tenantFeaturedGroupCard__name {
        word-break: break-word;


{
			if !test.result {
				t.Fatal("Should not match:", test.file)
			}
		} else {
			if test.result {
				t.Fatal("Should be match:", test.file)
			}
		}
	}
}

func TestMatchOp(t *testing.T) {
	dir, err := ioutil.TempDir(os.TempDir(), "goemon")
	if err != nil {
		t.Fatal(err)
	}
	defer os.RemoveAll(dir)

	tmp, err := ioutil.TempFile(dir, "goemon")
	if err != nil {
		t.Fatal(err)
	}

	ioutil.WriteFile(tmp.Name(), []byte(`
tasks:
- match: './assets/*.js'
  commands:
`), 0644)

	g := New()
	g.File = tmp.Name()
	err = g.load()
	if err != nil {
		t.Fatal("Should be succeeded", err)
	}

	tests := []struct {
		file   string
		op     fsnotify.Op
		result bool
	}{
		{"assets/a.js", fsnotify.Create, true},
		{"foo", fsnotify.Write, false},
		{"assets/a.js", fsnotify.Write, true},
		{"foo", fsnotify.Remove, false},
		{"assets/a.js", fsnotify.Remove, true},
		{"foo", fsnotify.Rename, false},
		{"assets/a.js", fsnotify.Rename, true},
		{"foo", fsnotify.Chmod, false},
		{"assets/a.js", fsnotify.Chmod, true},
	}

	for _, test := range tests {
		file, _ := filepath.Abs(test.file)
		file = filepath.ToSlash(file)
		if g.conf.Tasks[0].match(file) && g.conf.Tasks[0].matchOp(test.op) {
			if !test.result {
				t.Fatal("Should not match:", test.file, test.op)
			}
		} else {
			if test.result {
				t.Fatal("Should not match:", test.file, test.op)
			}
		}
	}

	ioutil.WriteFile(tmp.Name(), []byte(`
tasks:
- match: './assets/*.js'
  commands:
  ops:
  - CREATE
`), 0644)

	err = g.load()
	if err != nil {
		t.Fatal("Should be succeeded", err)
	}

	tests = []struct {
		file   string
		op     fsnotify.Op
		result bool
	}{
		{"foo", fsnotify.Create, false},
		{"assets/a.js", fsnotify.Create, true},
		{"assets/a.js", fsnotify.Write, false},
		{"assets/a.js", fsnotify.Remove, false},
		{"assets/a.js", fsnotify.Rename, false},
		{"assets/a.js", fsnotify.Chmod, false},
	}

	for _, test := range tests {
		file, _ := filepath.Abs(test.file)
		file = filepath.ToSlash(file)
		if g.conf.Tasks[0].match(file) && g.conf.Tasks[0].matchOp(test.op) {
			if !test.result {
				t.Fatal("Should not match:", test.file, test.op)
			}
		} else {
			if test.result {
				t.Fatal("Should not match:", test.file, test.op)
			}
		}
	}

	ioutil.WriteFile(tmp.Name(), []byte(`
tasks:
- match: './assets/*.js'
  commands:
  ops:
  - CREATE
  - chmod
`), 0644)

	err = g.load()
	if err != nil {
		t.Fatal("Should be succeeded", err)
	}

	tests = []struct {
		file   string
		op     fsnotify.Op
		result bool
	}{


\x0c\n\
    \x05\x04\x02\x02\x04\x06\x12\x03\x1f\x04\x0c\n\x0c\n\x05\x04\x02\x02\x04\
    \x01\x12\x03\x1f\r\x12\n\x0c\n\x05\x04\x02\x02\x04\x03\x12\x03\x1f\x15\
    \x16\n\x0b\n\x04\x04\x02\x02\x05\x12\x03\x20\x04)\n\r\n\x05\x04\x02\x02\
    \x05\x04\x12\x04\x20\x04\x1f\x17\n\x0c\n\x05\x04\x02\x02\x05\x06\x12\x03\
    \x20\x04\x17\n\x0c\n\x05\x04\x02\x02\x05\x01\x12\x03\x20\x18$\n\x0c\n\
    \x05\x04\x02\x02\x05\x03\x12\x03\x20'(b\x06proto3\
";

static mut file_descriptor_proto_lazy: ::protobuf::lazy::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::lazy::Lazy {
    lock: ::protobuf::lazy::ONCE_INIT,
    ptr: 0 as *const ::protobuf::descriptor::FileDescriptorProto,
};

fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
    ::protobuf::parse_from_bytes(file_descriptor_proto_data).unwrap()
}

pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
    unsafe {
        file_descriptor_proto_lazy.get(|| {
            parse_descriptor_proto()
        })
    }
}
use std::{
    borrow::Cow,
    collections::HashSet,
    fs::{self, File},
    io::{self, BufWriter, Write},
    path::{Path, PathBuf},
    time::Duration,
};

use structopt::StructOpt;

use self::fankit::{get_fankits_if_new_fankit_found, FankitId};

mod fankit;
mod node;

type BoxedError = Box<dyn std::error::Error + Send + Sync + 'static>;

/// Fankits downloader for Princess Connect Re:Dive.
#[derive(Debug, Clone, PartialEq, Eq, Hash, StructOpt)]
pub struct CliOpt {
    /// Destination directory
    #[structopt(short, long, parse(from_os_str))]
    dest: Option<PathBuf>,
    /// Crawl delay in milliseconds
    #[structopt(long, default_value = "1000")]
    delay: u64,
}

/// Initialize logger.
fn init_logger() {
    /// Default log filter for debug build.
    #[cfg(debug_assertions)]
    const DEFAULT_LOG_FILTER: &str = "priconne_fankit_dl=debug";
    /// Default log filter for release build.
    #[cfg(not(debug_assertions))]
    const DEFAULT_LOG_FILTER: &str = "priconne_fankit_dl=info";

    env_logger::Builder::from_env(env_logger::Env::default().default_filter_or(DEFAULT_LOG_FILTER))
        .init();
}

fn write_to_buffered_file<F>(out_path: &Path, f: F) -> io::Result<()>
where
    F: FnOnce(&mut BufWriter<File>) -> io::Result<()>,
{
    // Create the file and the writer.
    let file = match fs::File::create(out_path) {
        Ok(v) => v,
        Err(e) => {
            log::error!("Failed to create a file {}: {}", out_path.display(), e);
            return Err(e);
        }
    };
    let mut writer = BufWriter::new(file);

    // Do the job.
    f(&mut writer)?;

    // Flush the writer.
    if let Err(e) = writer.flush() {
        log::warn!("Failed to flush the buffer: {}", e);
    }
    let file = match writer.into_inner() {
        Ok(v) =