#development

1 messages · Page 157 of 1

empty cradle
#

Dang

orchid fulcrum
#

Is there a way to delete everything(restore to default) in /var without factory resetting on newer versions like 17.4

faint stag
#

why wouldn't you be able to catch an exception

orchid fulcrum
slim bramble
slim bramble
faint stag
slim bramble
orchid fulcrum
#

Oh okay thanks. Thats factory resetting though right

slim bramble
#

W

acoustic imp
#

@indigo peak did u ever figure out the like rotation thing ?

indigo peak
#

yes

#

I think

acoustic imp
#

can i ask what did you do ?

indigo peak
#

yes I did

#

uhhh

#

id have to look

#

I don’t remember off the top of my head

acoustic imp
#

ok lmk when u a chnace

#

ig debugserver just doesn't like me

indigo peak
acoustic imp
#

oh...

#

thx anyway

#

so ur tweak isnt gona support ios 15/14 ?

indigo peak
#

probably not

acoustic imp
#

lunar and mooner does

indigo peak
#

bc theres too much dependence on 16

#

troll

acoustic imp
#

will it be free tho hm

radiant idol
#

I’m free

#

I’m not free

timid furnace
#

Makefiles are hard

lyric heron
#

just don't include one

timid furnace
#

Well I want to build my own code

lyric heron
#

oh well that's

#

bad

timid furnace
#

Yea, basic makefiles are easy but as soon as you want to do something non trivial you get stuck

#

Like what I'm trying to do is put my object files in build/iOS if I'm building the iOS target and build/macOS for macOS

#

But it's not working

lean ermine
#

why do ppl want it to support 15 😭

indigo peak
#

oh yeah sure lemme just pull an iOS 15 device out of my ass

kind herald
hasty ruin
#

tf

kind herald
#

24% of the population stores iOS 15 devices up their ass

hasty ruin
acoustic imp
radiant idol
#

and people say I write bad code

#

@primal perch what is this

acoustic imp
native orbit
#

it does exactly what is says fr

native orbit
radiant idol
#

Ok well that has a reason

indigo peak
radiant idol
#

.

primal perch
#

pretty obvious fr

hasty ruin
radiant idol
wooden yarrow
#

required for callback arguments that don't accept null

#

although I don't know and don't think that's the case here

hasty ruin
#

thought it was a c func

radiant idol
#

Lol

cloud yacht
#

Question if you called that do nothing function, would the compiler optimize the call out of existence?

wooden yarrow
#

yeah

indigo peak
radiant idol
#

Oh

wooden yarrow
#

better to have it be optimized out

indigo peak
#

that is the point

hexed knot
#

Thats the joke

indigo peak
#

thank you christian

tepid olive
primal perch
#

🤭

tepid olive
#

Yeah I’m not very good at jokes over the Internet ;-;

hexed knot
#

I literally said thats the joke

tepid olive
#

I didn’t see that woeis

proud geyser
#

is .xcodeproj folder something i should be pushing to github?

acoustic imp
#

(the walp video should be like smoothly changing/seeking to that time)

wooden yarrow
proud geyser
#

so thought it wasnt necessary

wooden yarrow
#

hm ig yeah

#

could remove

#

maybe?

#

not the xcodeproj

#

the team id

proud geyser
#

thats fine i just turned the repo private

cloud yacht
#

its empty

proud geyser
#

is rust lang good for backend?

primal perch
#

yea

proud geyser
# primal perch yea

question is it possible to make a videocalling app without backend server where it just runs on client nodes

#

apparently its a thing called p2p

rain egret
#

Hello

#

If there was a certain notification id like to disable, how would i find the class for it?

#

I'd like to learn so a point in the right direction would be plenty

placid kraken
#

what

faint timber
#

its law

lyric heron
#

hi cuties

hasty ruin
#

MODS this user has linked to a page that links to PIRACY

lyric heron
hasty ruin
lyric heron
#

found this

#

heard its better

#

help me use it

hasty ruin
#

Just inject with sideloadly fr

lyric heron
#

i dont want to install it on device though

hasty ruin
#

There’s an export option

lyric heron
#

my favorite type of error trol

#

@hasty ruin need to inject both libflex and flexing right

slim bramble
#

FLEXing allows you to open flex and libflex

#

Well

lyric heron
slim bramble
#

The options

lyric heron
#

substitute

#

and sideload spoofer

slim bramble
#

Show

#

The options

lyric heron
#

it was like that in the beginning

slim bramble
#

@lyric heron

lyric heron
#

ok so i pick

#

none

slim bramble
#

You might want to choose substitute

lyric heron
#

might?

slim bramble
#

Idk flex might rely on substitute

#

But I am to braindead to tell you

lyric heron
#

ah yes

#

sideloadly no worky

blazing warren
#

More easy

native dune
#

why would you inject the rootless one

lyric heron
native dune
#

idk

hasty ruin
#

No

faint stag
faint stag
#

either way sideloadly is gonna patch it so

faint stag
#

where is it

#

oh it's on gitbook
meh i guess i'll work on updating all that later

slim bramble
#

🙏

torn cloud
#

anyone know why corellium is super slow?

tepid olive
#

Because it’s over the Internet??

#

And it’s being emulated

sonic totem
#

This

#

You’ll have to pay a lot more for more cores

torn cloud
#

you get 6 cpu cores by default with that

slim bramble
indigo peak
#

ASI found [libc++abi.dylib] (sensitive) 'terminating due to uncaught exception of type NSException'

#

real

acoustic imp
#

anyone know why this might cause IOS 15 to respring hang? (more specifically my 12 mini 15.1.1)


 NSDictionary *funcName(NSData *jsonData) {
    NSError *error = nil;
    
    id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];
    return (NSDictionary *)jsonObject;
    ```
faint timber
#

question

#

objc cli bin how does it exit?
exit is never called
nsthread exit is never called

faint timber
bright lance
#

Is there any unity decompilers like DnSpy that could be used on mac?

faint timber
hollow scroll
#

Looking for help updating a tweak to run on iOS 16:
For some reason the method i used to display a UIWindow on top of the springboard does not work anymore.
I can see the UIWindow in the "Heap Objects" section of Flex but it is not displaying on the screen.
here is a code snippet:

hook SpringBoard
- (void)applicationDidFinishLaunching:(id)application
{
  %orig;
  kScreenW = [[UIScreen mainScreen] bounds].size.width;
  kScreenH = [[UIScreen mainScreen] bounds].size.height;

  springboardWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, kScreenW, kScreenH)];
  springboardWindow.windowLevel = 9999999999;
  [springboardWindow setHidden:NO];
  springboardWindow.alpha = 1;
  [springboardWindow _setSecure:YES];
  [springboardWindow setUserInteractionEnabled:NO];
  springboardWindow.layer.masksToBounds = YES;
  springboardWindow.layer.shouldRasterize  = NO;
  // stuff
}
%end

Any ideas on what changed from iOS 15 to 16?

faint timber
#

need some help
I'm hooking __NSCFString: -(NSRange)rangeOfString:(NSString*)arg1

but calling any selector with arg1 causes bus error 10

acoustic imp
#

@radiant idol for 16Player contributions do you want ur black PFP or the one u have here on discord as your pfp?

faint stag
kind herald
#

include jade deb in 16player

faint timber
acoustic imp
#

k

native orbit
#

is there anyway to set a 'preferred slice' when using posix_spawn?

timid furnace
#

Spawnattrs

#

There's something about it in xnu src

indigo peak
native orbit
indigo peak
#

posix_spawnattr_setarchpref_np

#

maybe that?

native orbit
#

that what i found trying it rn 🙏

indigo peak
#

inshallah

#

@native orbit

#define CPU_ARCH_ABI64            0x01000000        /* 64 bit ABI */
#define CPU_TYPE_ARM            ((cpu_type_t) 12)
#define CPU_TYPE_ARM64          (CPU_TYPE_ARM | CPU_ARCH_ABI64)

#define CPU_SUBTYPE_BIG_ENDIAN          ((cpu_subtype_t) 1)

int main() {
    posix_spawnattr_t attr;
    posix_spawnattr_init(&attr);

    posix_spawnattr_setarchpref_np(&attr, 1, (cpu_type_t[]){ CPU_TYPE_ARM64 }, (cpu_subtype_t[]){CPU_SUBTYPE_BIG_ENDIAN}, NULL); // arm64e slice inshallah

    posix_spawnattr_destroy(&attr);

    return 0;
}
native orbit
indigo peak
#

W

native orbit
indigo peak
#

fr

indigo peak
native orbit
#
cpu_type_t cpu_prefs[] = { CPU_TYPE_ARM64 };
cpu_type_t sub_prefs[] = { CPU_SUBTYPE_ARM64_ALL };
posix_spawnattr_setarchpref_np(&attr, sizeof(cpu_prefs) / sizeof(cpu_prefs[0]), cpu_prefs, sub_prefs, NULL);

this what i ended up doing

indigo peak
#

whenever i tried doing sizeof(arr) / sizeof(arr[0]) the compikle says like
sIzEOf DOEsn't do WHAt yoU ThiNk It doEs

#

i tried

#

be impressed i got that far

native orbit
#

it works fine and is stolen from xnu tests bruh

faint timber
#

seems ellekit is doing incorrect stack saftey

#

its crashing in tramp

#

which one

#

btw Im using real substrate

#

not ellekit

#

no that asm is inspective c

#

which uses fishhook

#

my hook is substrate logos

#

It’s crashing before the blr tho

#

Bl*

#

All good no rush or anything

indigo peak
#

@faint timber W song

faint timber
indigo peak
#

both

#

chanel and eleven

#

lmao

faint timber
#

Haha

#

I wish you luck

indigo peak
#

@grave sparrow i was making my schedule for next sem and i have to take CS 301 which is like an algorithm/data struct course but its entirely java and its from 6:30-9:30 monday nights

faint timber
#

Probably calculate the olog of n

indigo peak
#

im going to end my life

#

bc theres no way for me to skip the course or anything

#

i legit tutor people in that class

#

yes

#

what is the assignment

pearl sail
#

Olog(n) efficiency

acoustic imp
#

Thoughts ? Lmk if u helped me or bibi, I still Gota add yan, comrad, Christian, and Idr

cloud yacht
kind herald
indigo peak
#

bc if not

#

that looks really cool

#

also i love the descriptions

#

Nightwind: Huge help couldnt have done it without him
fiore: Big help with the prefs, wouldnt look the same without him
iCraze: helped answer a couple questions i guess

cloud yacht
#

also hold on iCraze has more social media

indigo peak
#

man

#

from where

#

im bouta do the same

cloud yacht
#

I guess it is a lot like the iCloud cell

indigo peak
#

cephei

cloud yacht
#

ah yes, [redacted], unkown, unkown and general

indigo peak
#

youre just not cool enough to be in any of them ig

radiant idol
#

@grave sparrow do your homework

indigo peak
#

fr

hexed knot
#

what is the first one

#

or the 2nd one i mean

radiant idol
#

their weird gc

indigo peak
#

just bc youre not in it doesnt mean its weird

radiant idol
#

if you have capt in it, it’s weird

#

wha

#

RIP 🦆

acoustic imp
#

I did the depictions lol

#

The cells r buttons also(he also messed up GH Links)

indigo peak
#

dont make it popup

#

make it actually just open

#

unless its meant to have all the socials there

acoustic imp
#

That’s for this page

radiant idol
#

fiore
Open Twitter
Cancel

acoustic imp
#

Killall backboard

timid briar
#

calling it twitter based

young meteor
indigo peak
#

surprised it hasnt happened yet

acoustic imp
acoustic imp
indigo peak
#

no

kind herald
radiant idol
#

oh

cloud yacht
#

imma be honest, if I'm crediting any of you in a tweak, you'll get a PSGroupCell Footer or maybe a PSButtonCell that links to a social media

trim musk
harsh junco
faint stag
#

wtf are the gods cooking

granite frigate
#

that's cool

faint stag
#

also didn't know they had a touch simulator (like autotouch) built in

#

wild

knotty tusk
#

gm smart rjb people, any ideas why this fails? i can edit the plist from filza just fine but it fails through ssh
ios 16.0 iphone 12 mini jailbroken with dopamine

$ sudo /var/jb/usr/libexec/PlistBuddy -c 'Merge /tmp/5g_enabler.plist' /var/mobile/Library/Carrier\ Bundles/Overlay/device+carrier+Default.bundle+D52g+51.0.plist
Cannot Write File
#

trying to make a script that enables 5G because my carrier disables it on any iOS lower than 16.4

#

works from filza just fine but it reverts on its own

frail cedar
knotty tusk
#

im using it just fine

#

when i do it from filza by hand

frail cedar
#

yes

#

and then it reverts

#

because ios noticed that it wasn't correct and redownloaded a fixed one

knotty tusk
#

when commcenter restarts yes

#

so my idea was running this on a tweak every time commcenter launches

frail cedar
#

you could probably make a tweak to prevent this

#

ye

#

drop it into IDA or something and see what you can find

knotty tusk
#

ill see what i find

hasty ruin
frail cedar
knotty tusk
#

couldnt i just hook whatever function checks if the 5G switch should be displayed

frail cedar
#

no

#

because the carrier bundle will still disallow it

knotty tusk
#

so hook that function to make it think its still sealed and then add the keys to the plist by hand?

frail cedar
#

yes

knotty tusk
#

alright ill try that when i get home

knotty tusk
#

im assuming my inability to write tweaks is what caused me to respring loop, i have absolutely no idea how to write a tweak other than documentation online

knotty tusk
#

isCarrierBundleSealBroken seems to not exist on my phone's CommCenter binary

frail cedar
knotty tusk
#

oh

#

fr

#

someone helped me find the actual function

frail cedar
#

drop CommCenter bin into IDA and go snooping

#

or that works too

knotty tusk
#

int64_t VerifyCarrierBundleSignature(int64_t arg1, int32_t arg2, int64_t arg3)

#

just gotta make this return 1

#

its in a dylib tho, not on the actual binary

radiant idol
#

dlopen the dylib if it hasnt already been loaded

#

then use MSFindSymbol to get the symbol from the dylib image

#

@knotty tusk ^

knotty tusk
#

hm

#

seems to be doing absolutely nothing with both the unmangled and the mangled symbol name, so either my code is horribly broken or this function isnt the one i should be hooking

radiant idol
# knotty tusk hm

something like this:

%hookf(int64_t, VerifyCarrierBundleSignature, int64_t arg1, int64_t arg2, int64_t arg3) {
    return 1;
}

%ctor {
    const char *dylib_path = "/path/to/the/dylib";

    void *handle = dlopen(dylib_path, RTLD_LAZY);
    
    if (handle) {
        %init(VerifyCarrierBundleSignature = MSFindSymbol(MSGetImageByName(dylib_path), "_VerifyCarrierBundleSignature"));
    } else {
        NSLog(@"failed to get handle!");
    }
}
#

I think

knotty tusk
#

hm

#

lemme try

radiant idol
#

note that thats just pseudocoded out

#

that may not be right

knotty tusk
#

well that respring looped me so im assuming something may be null

#

i have no idea how to access logs so that complicates debugging

radiant idol
#

You can use RemoteLog (search it up) or the console app on macOS

knotty tusk
#

oh yea the console app

#

thanks

#

its not finding the symbol

#

im guessing its mangled then

#

__Z28VerifyCarrierBundleSignatureRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE15CBSignatureType16SignatureKeyType doesnt seem to fail

#

but that still ends up reverting the file so its not the one i should be hooking

faint timber
#

It can’t revert the file if it’s not in memory or have a copy so make sure this is not the case

knotty tusk
#

im assuming its just re-downloading it from my carrier and that i hooked the wrong function

faint timber
#

Can always chflags

knotty tusk
#

that seems to actually work

#

it hasnt reverted yet

#

but 5G is disabled

#

so now it doesn't revert back but it just ignores the content of the plist

#

great

drifting heron
#

neat, someone risked enabling the option and it works? idk if the video is fake

restive ether
#

no different then enabling fluid gestures i guess

#

but your display isn’t going to appreciate this

drifting heron
#

yeahh

restive ether
#

no VRR

drifting heron
#

the iPhone 13 Pro goes down to 10 Hz right?

#

and 14 Pro can go down to 1Hz afaik

restive ether
#

something like that

drifting heron
#

still most likely better to use the LastLook tweak since it’ll probably give you way better battery life than enabling this iOS option

knotty tusk
#

i love ios

radiant idol
#

so just like zefram

twilit jungle
#

But why does burnin and battery matter when I am just going to get a new phone every year?

drifting heron
#

should be fine on 13 pro/pro max. it would mainly just kill your battery life trolley

harsh junco
#

Link in dmstrol

tepid olive
#

just realized this was the wrong channel yeah, ill dm

tepid olive
#

@lyric heron what weathers

#

I'll do clear skies first

worthy mulch
#

what would be needed for a quick CLI accelerometer demo on my dopamine'd iPhone 13?

tepid olive
#

y'all how do I get GPS coords

worthy mulch
#

I'm thinking just writing in C and compiling with theos?

hexed knot
#

you mean objective c

tepid olive
#

@lyric heron ima make it so you need to get your own API key

#

because it's only 1,000 requests a day for all the APIs

#

and I don't think that'd be enough

lyric heron
#

im almost home

#

just had sports

#

ill reply to ur pings in a few

lyric heron
#

or did you decide

indigo peak
lyric heron
radiant idol
#

what is this image

indigo peak
#

least descriptive picture in existence

lyric heron
#

i'm omw home

#

what am i supposed to show

radiant idol
#

that can literally be anything

#

i thought it was like

lyric heron
#

no ur blind

radiant idol
#

a jacket or something

lyric heron
#

get unblind

tepid olive
#

but list all weather types you want to be included

lyric heron
#

probably

#

sunny

#

cloudy

#

rainy

#

and snowy even though that never happens here😔

tepid olive
#

lol

#

ok

#

uhm are you fine with people having to specify API keys?

lyric heron
#

as long as you tell me to get mine trol

frail cedar
placid kraken
#

@radiant idol 176

radiant idol
acoustic imp
#

POV no storage

#

Actually I think that’s like 164

tepid olive
#

@native orbit me when experimental language: ```/Users/sora/zig-macos-x86_64-0.12.0-dev.3154+0b744da84/lib/std/fmt.zig:470:5: error: invalid format string 'f' for type 'f80'
@compileError("invalid format string '" ++ fmt ++ "' for type '" ++ @typeName(@TypeOf(value)) ++ "'");
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
referenced by:
formatFloatValue__anon_17118: /Users/sora/zig-macos-x86_64-0.12.0-dev.3154+0b744da84/lib/std/fmt.zig:781:24
formatValue__anon_16633: /Users/sora/zig-macos-x86_64-0.12.0-dev.3154+0b744da84/lib/std/fmt.zig:703:58
remaining reference traces hidden; use '-freference-trace' to see all reference traces
/Users/sora/zig-macos-x86_64-0.12.0-dev.3154+0b744da84/lib/std/fmt/parse_float/parse_float.zig:18:9: error: TODO support parsing float to f80
@compileError("TODO support parsing float to f80");
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#

guess I have to approximate then

#

it doesn't support floats at all

hasty ruin
#

shit lang lol

tepid olive
#

nah it's just strings

radiant idol
#

use objc

tepid olive
#

I can just approximate to decimals

#

the weather API won't care nor will it give different data lol

#

wait

#

shit

#

it doesn't support doubles in its json thing

#

whatever

native orbit
tepid olive
#

finally got it to compile

tepid olive
#

like

#

why is this necessary

#
 const fileforWeather: [:0]u8 = switch (weatherid) {
        801...804 => blk: {
            const returneventually: [*c]const u8 = "/var/jb/Library/Application Support/WeatherWhirl/clearskies.jpg";
            break :blk @constCast(std.mem.span(returneventually));
        },
        else => blk: {
            const returneventually: [*c]const u8 = "";
            break :blk @constCast(std.mem.span(returneventually));
        },
    };
tepid olive
#

(because in the openweathermap API, those are all just different variants of clear skies)

tepid olive
#

I don't plan on supporting rootful :)

hasty ruin
#

root_path does more than rootful/rootless now

#

uses libroot fr

tepid olive
#

wdym

#

I mean I could prolly use it if needed

hasty ruin
#

so if a jb wants to have another root path (such as roothide), the same code works there

tepid olive
#

ah

hasty ruin
#

gets the path at runtime instead of the macro hardcoding it

tepid olive
#

I'll change it if anyone has issues

hasty ruin
tepid olive
#

I really hope this prevents it from crashing if the weather doesn't have an image implemented const uiimg = helpers.getUIImageForCurrentWeather() catch return;

primal perch
#

glizzy

acoustic imp
tepid olive
#

that's not how zig works

#

is there a way to get the abort message

#

it's crashing from one of my explicitly called abort calls

#

and they all have specific messages

#

and I'd like to see which one it is lol

tepid olive
#
pub fn panic(msg: []const u8, stack_trace: ?*std.builtin.StackTrace, ret_addr: ?usize) noreturn {
    var gpa = std.heap.GeneralPurposeAllocator(.{}){};
    defer if (gpa.deinit() != .ok) NSLog(helpers.StrToNSStr(helpers.NonStringSliceToSlice(@constCast("Oh well."))));
    const allocator = gpa.allocator();
    const formattedstr: [:0]u8 = std.fmt.allocPrintZ(allocator, "WeatherWhirl panicking! Error Message: {s}", .{msg}) catch unreachable;
    NSLog(helpers.StrToNSStr(formattedstr));
    if (stack_trace) |trace| {
        var buffer: [50000]u8 = undefined;
        var fbs = std.io.fixedBufferStream(&buffer);
        const stream = fbs.writer();
        std.debug.writeStackTrace(trace.*, stream, allocator, std.debug.getSelfDebugInfo() catch unreachable, .no_color) catch unreachable;
        NSLog(helpers.StrToNSStr(helpers.NonStringSliceToSlice(&buffer)));
    }
    _ = ret_addr;
    std.os.abort();
}
#

cursed

#

uhmmm

#
    note: while parsing 
#

tf

#

what file isn't found

#

explain

#

ok apparently it just doesn't like my custom panic function lol

radiant idol
#

pub fn panic(msg: []const u8, stack_trace: ?*std.builtin.StackTrace, ret_addr: ?usize) noreturn {
    var gpa = std.heap.GeneralPurposeAllocator(.{}){};
    defer if (gpa.deinit() != .ok) NSLog(helpers.StrToNSStr(helpers.NonStringSliceToSlice(@constCast("Oh well."))));
    const allocator = gpa.allocator();
    const formattedstr: [:0]u8 = std.fmt.allocPrintZ(allocator, "WeatherWhirl panicking! Error Message: {s}", .{msg}) catch unreachable;
    NSLog(helpers.StrToNSStr(formattedstr));
    if (stack_trace) |trace| {
        var buffer: [50000]u8 = undefined;
        var fbs = std.io.fixedBufferStream(&buffer);
        const stream = fbs.writer();
        std.debug.writeStackTrace(trace.*, stream, allocator, std.debug.getSelfDebugInfo() catch unreachable, .no_color) catch unreachable;
        NSLog(helpers.StrToNSStr(helpers.NonStringSliceToSlice(&buffer)));
    }
    _ = ret_addr;
    std.os.abort();
}
primal perch
tepid olive
#

made it a bit better

#
    var gpa = std.heap.GeneralPurposeAllocator(.{}){};
    defer if (gpa.deinit() != .ok) NSLog(helpers.StrToNSStr(helpers.NonStringSliceToSlice(@constCast("Oh well."))));
    const allocator = gpa.allocator();
    const formattedstr: [:0]u8 = std.fmt.allocPrintZ(allocator, "WeatherWhirl panicking! Error Message: {s}", .{msg}) catch unreachable;
    NSLog(helpers.StrToNSStr(formattedstr));
    var buffer: [50000]u8 = undefined;
    var fbs = std.io.fixedBufferStream(&buffer);
    const stream = fbs.writer();
    std.debug.writeCurrentStackTrace(stream, std.debug.getSelfDebugInfo() catch unreachable, .no_color, @returnAddress()) catch unreachable;
    NSLog(helpers.StrToNSStr(helpers.NonStringSliceToSlice(&buffer)));
    std.os.abort();
}
tepid olive
#

dude what

#

it was just working 😭

#
error: the following command terminated unexpectedly:```
#

and now it's working again??

acoustic imp
#

is it like not good to hook the same method on the same class twice in the same tweak? i would do it in dif %groups

trail venture
#

someone should make an app that can make an ipad act as an external display in linux on wayland gunz

#

wait i can vnc?

acoustic imp
#

yes

#

i fg ab that method

#

yea theres sm github for a virtual display

#

of just plug to cabels from ur pc into ur monitory and ur pc will think u hav 2 screens

#

hax ™️

trail venture
#

i use hyprland (not gnome or kde) so i might just be able to do a headless display i can vnc

#

or rdp

#

what is better

acoustic imp
#

uhhh idk try both?

trail venture
#

rather, which can i use over usb (if any)

acoustic imp
#

im a plazma kinda guy

acoustic imp
#

jus look on GH

#

sm nerd probly made somthing

trail venture
#

i lost the gh

#

i was on it

#

but lost it

acoustic imp
#

look in your history

trail venture
#

we are ballin

tepid olive
#

do I need special permissions to use CLLocationManager?

acoustic imp
#

any one know a tweak that can chnage the color of the pause/play, skip buttons on the LS? bc im trying to do that but im getting safemoded

hasty ruin
acoustic imp
#

It’s probly the same

#

Well I’m doing (hooked MRUTransportButton) “self.imageView.tintColor = (UIColor)”

#

“ImageView” is a UIImageView

#

U can do it with flex

hasty ruin
visual meadow
#

except ipad its the exact same

faint timber
#

devel ment

pearl sail
#

University Professor failing you cause they come in with a bootlooped MacBook and iPhone due to Zefram:

sonic totem
faint timber
#

No way thank you so much

wheat grotto
#

What exactly should I sign when creating a JWT ? The users username ? Email ? ID ? Entire row of that users info except for password in my db ?

torn cloud
#

is Dave van Wijk still active anymore?

#

I just bought QuickLS and it doesn’t work

wheat grotto
#

Get trolled

torn cloud
#

ok but seriously

#

the buttons don’t work

tepid olive
#

prolly the worst thing to use

wheat grotto
#

Suggest a better one then

#

¯_(ツ)_/¯

torn cloud
granite frigate
wheat grotto
#

Sign the key itself and append user password to it troll

tepid olive
#

errrrrm. a server provided unique id!!!

#

mfw emails can change

#

or idk depends on your use case

#

unique id assignment is pretty nice

olive peak
#

Where do i get the cydia substrate sdk from?

wheat grotto
#

I use UUIDs for IDs

tepid olive
#

@native orbit is there a way to parse a block to AST, or will I have to have people pass a string

#

Or make me pass a string, I’m trying to make a better objc thing for zig

#

So that you can call a function, and then put a block there that uses objc message send syntax

#

And I parse it to change it to use the internal functions using AST in comptime

#

But I might have to use strings anyways

#

Because the message send syntax won’t compile although the modified AST should change it anyways

#

Or another thing I could do is make it part of the zig compiler and send a PR, from what I’ve seen Zig is pretty open to changes like that

tepid olive
#

hm

#

for some reason my code is locking up springboard

#

idk why though lol

lyric heron
torn cloud
#

trol

tepid olive
placid kraken
#

or maybe

#

perhaps even

tepid olive
#

?

#

oh

placid kraken
#

i also tried

#

and it worked

tepid olive
#

ah

primal perch
indigo peak
#

yeah but thats a lot of work

#

i usually do

torn cloud
#

what is everyone yapping about

indigo peak
#

why does the posterboard icon kinda go hard

#

allat for an icon that you can never see 💀

sonic totem
#

I remember thinking the same

#

Why so much effort for an invisible icon

indigo peak
#

FR

#

nah cuz like
why tho

#

allat for nothin

visual meadow
visual meadow
#

speechmemified_pasteimage.gif

indigo peak
#

real

sonic totem
#

Remember when I blocked you

indigo peak
#

didnt even notice

tepid olive
#

something in my hook is causing an infinite loop

#

but idk why

#

or what

lyric heron
#

and not only for you

tepid olive
#

yes

twilit jungle
#

🧢

primal perch
tepid olive
lyric heron
#

i dont care about my uptime

tepid olive
#

no you don't

lyric heron
tepid olive
#

seriously

lyric heron
#

damn

tepid olive
#

not a respring loop or anything

#

you get stuck on black screen

#

because springboard doesn't get to fully start

#

or something

#

it might not even be infinite recursion

#

but I think it is because watchdog kills it

#

oh wait nvm

#

what

#
Exception Subtype: KERN_INVALID_ADDRESS at 0x000000016ba1f398
Exception Codes: 0x0000000000000001, 0x000000016ba1f398
VM Region Info: 0x16ba1f398 is not in any region.  Bytes after previous region: 1717498777  Bytes before following region: 167016
      REGION TYPE                 START - END      [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      CG raster data           105428000-105430000 [   32K] r--/r-- SM=PRV  
--->  GAP OF 0x66618000 BYTES
      Stack Guard              16ba48000-16ba4c000 [   16K] ---/rwx SM=NUL  
Termination Reason: SIGNAL 4 Illegal instruction: 4
Terminating Process: SpringBoard [19167]

Triggered by Thread:  0

Thread 0 name:   Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libmeniscus.dylib                        0x104f38a18 root.viewdidappearhook + 44```
twilit jungle
lyric heron
cloud yacht
lyric heron
cloud yacht
#

thats just more reason to keep him blocked longer

sonic totem
#

But then I forgot I’d blocked him

#

And then unblocked him

cloud yacht
#

well I think everyone just insluts projects made by people named alfie here

tepid olive
#

atp I'm prolly just gonna use swift tho

#

but I would like to get this to work

sonic totem
#

I’m doing work

tepid olive
sonic totem
#

Doing maths

tepid olive
#

damn

lyric heron
#

doing maths with me k3llyShrug

sacred cosmos
#

What do y’all use for rich presence in vs code? Like is there a preferred extension? I see multiple options.

#

The most promising one I've seen is vscord (Discord Rich Presense by LeonardSSH)

hexed knot
#

the one with the most downloads

#

its discord presence its not that serious

tepid olive
acoustic imp
cloud yacht
#

probably a skill issue

brazen timber
#

you will grow out of it

sonic totem
#

Thank god no one knew who I was trol

kind herald
#

can you leak trollstore 3 with that extension troll

sonic totem
acoustic imp
#

how do i like disable a cell in prefs? like gray it out ?

radiant idol
#

Are you doing this via plist or programmatically

slim bramble
radiant idol
#

Bruh idk

slim bramble
#

I think it’s straight up if identifier == whatever { self.disabled = YES;}

#

Am I right ? @radiant idol

visual meadow
radiant idol
#

I don’t remember

radiant idol
#

8.&

#

idk

acoustic imp
#

@radiant idol

radiant idol
#

No

#

There’s a property

#

Change that one instead of the ivar

acoustic imp
#

is it jus cellenabled ?

radiant idol
#

Is there a setter

#

like

#

setCellEnabled

acoustic imp
#

yes

radiant idol
#

ok so yeah just do self.cellEnabled = false

acoustic imp
#

k

radiant idol
#

maybe it could be isCellEnabled

#

I don’t remember

acoustic imp
#

should have looked here... oops

#

oh wait

indigo peak
#

how do readonly properties actually work, like I know that the readonly field only generates a getter and no setter, but how does it actually get set during runtime or whatever

radiant idol
#

Readonly properties are readonly but you’ll always still be able to access the underlying ivar

indigo peak
#

so there’s an ivar for every property?

radiant idol
#

Yea

indigo peak
#

hm

#

ok

#

weird

radiant idol
#

There’s not a property for every ivar, but theres an ivar for every property

#

Except class properties, I don’t know how those actually work

indigo peak
#

ah okay

acoustic imp
radiant idol
#

Skill issue

indigo peak
acoustic imp
radiant idol
#

My cells are better

radiant idol
acoustic imp
#

self.contentView.alpha = 0.5 hm

indigo peak
#

my cells are stock

acoustic imp
#

couldn't be me

radiant idol
#

That’s a stock issue

acoustic imp
#

so fix it...

indigo peak
radiant idol
#

Can’t be bothered

acoustic imp
#

i did

acoustic imp
indigo peak
#

did you fix it

#

or did Rosie fix it

#

🥱

acoustic imp
#

rosie was the insperation

#

but mine is dif bc i had dif needs

hasty ruin
tepid olive
#

can somebody tell me

#

why my code

#

crashes

#
#include <CoreFoundation/CFCGTypes.h>
#include <CoreGraphics/CGGeometry.h>
#include <Foundation/NSObjCRuntime.h>
#include <UIKit/UIImageView.h>
#include <UIKit/UIScreen.h>
#include <UIKit/UIViewController.h>
#include <substrate.h>
#include <UIKit/UIKit.h>
#include "WeatherHandler.h"
@interface PBUIPosterWallpaperRemoteViewController: UIViewController 
@end
void (*ogviewdidload)(PBUIPosterWallpaperRemoteViewController *self, SEL _cmd);
void viewDidLoadHook(PBUIPosterWallpaperRemoteViewController *self, SEL _cmd) {
    ogviewdidload(self,_cmd);
    UIView *view = self.view;
    UIImage *img = UIImageForCurrentWeather();
    if(img == nil) {
        return;
    }
    UIImageView *imgView = [[UIImageView alloc] initWithImage:img];
    imgView.frame = CGRectMake(0, 0, UIScreen.mainScreen.bounds.size.width, UIScreen.mainScreen.bounds.size.height);
    [view addSubview:imgView];
    [view bringSubviewToFront:imgView];
}

__attribute__((constructor)) static void init() {
    MSHookMessageEx(NSClassFromString(@"PBUIPosterWallpaperRemoteViewController"), @selector(viewDidLoad), (IMP)&viewDidLoadHook, (IMP *)&ogviewdidload);   
}
#

is there a reason to use objc_getClass over NSClassFromString?

#

oh

#

and here's those other functions

#
#include "WeatherHandler.h"
#import <CoreFoundation/CoreFoundation.h>
#include <Foundation/NSDictionary.h>
#include <Foundation/NSJSONSerialization.h>
#include <Foundation/NSString.h>
#include <Foundation/NSURLSession.h>
#include <CoreLocation/CLLocationManager.h>
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
#import <libroot.h>
int getIDOfCurrentWeather() {
    CLLocationManager *locationManager = [[CLLocationManager alloc] init];
    [locationManager startUpdatingLocation];
    NSString *urlstr = [NSString stringWithFormat:@"http://api.openweathermap.org/data/2.5/weather?lat=%f&lon=%f&appid=",locationManager.location.coordinate.latitude,locationManager.location.coordinate.longitude];
    NSURL *url = [NSURL URLWithString:urlstr];
    [locationManager stopUpdatingLocation];
    __block int out = 0;
    NSURLSessionDataTask *downloadTask = [[NSURLSession sharedSession] dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        if(error) {
            return;
        }
        NSDictionary *results = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
        NSDictionary *weather = [results objectForKey:@"weather"];
        NSNumber *id = [weather objectForKey:@"id"];
        out = [id intValue];
    }];
    [downloadTask resume];
    return out;
}

UIImage *UIImageForCurrentWeather() {
    int id = getIDOfCurrentWeather();
    NSString *filePath = @"";
    switch(id) {
        case 801 ... 804:
        filePath = [NSString stringWithFormat:@"%s/Library/Application Support/WeatherWhirl/clearskies.jpg",libroot_dyn_get_jbroot_prefix()];
        break;
    }
    if([filePath isEqualToString:@""]) {
        return nil;
    }
    return [UIImage imageWithContentsOfFile:filePath];
}
#

whoops

timid furnace
#

have you tried looking at crash logs

#

those usually help

indigo peak
timid furnace
#

libroot_dyn_get_jbroot_prefix

#

use the macros

tepid olive
#

what macros

timid furnace
#

rootless.h

indigo peak
tepid olive
#

yes

#

except from scratch

#

I was originally making it in zig

#

but like

indigo peak
tepid olive
#

that didn't work so well

tepid olive
tepid olive
indigo peak
#

and then switch to zig

tepid olive
indigo peak
tepid olive
#

I'll switch to zig in like v2 or smthing because it's faster

indigo peak
#

and you’re copying my idea

indigo peak
indigo peak
#

I can delete all your messages

#

.

tepid olive
#

oh

#

right

tepid olive
#

anyways

tepid olive
hasty ruin
tepid olive
#

idk it's some random theme I liked

#

why

cloud yacht
tepid olive
timid furnace
#

idk aren't there only like

#

2

tepid olive
#

ROOTFS_PATH_NSSTRING

#

this one?

timid furnace
#

take a wild guess

tepid olive
#

yes

#

oh also

#

do I need special permissions to use CLLocationManager

#

(this is in the context of SpringBoard)

#

@timid furnace ```Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Triggered by Thread: 8

Application Specific Information:
abort() called

Last Exception Backtrace:
0 CoreFoundation 0x1a8b6540c __exceptionPreprocess + 160
1 libobjc.A.dylib 0x1a1e45c28 objc_exception_throw + 56
2 CoreFoundation 0x1a8cc6400 +[NSObject(NSObject) _copyDescription] + 0
3 CoreFoundation 0x1a8b7a8b8 forwarding + 1340
4 CoreFoundation 0x1a8bdc8fc _CF_forwarding_prep_0 + 92
5 WeatherWhirl.dylib 0x105aa4a8c __getIDOfCurrentWeather_block_invoke + 224
6 CFNetwork 0x1a9b49b50 0x1a9b2c000 + 121680
7 CFNetwork 0x1a9b58a98 0x1a9b2c000 + 182936

timid furnace
#

__getIDOfCurrentWeather_block_invoke

#

what you doing here

tepid olive
#

I assume that means it's erroring in this block

#
        if(error) {
            return;
        }
        NSDictionary *results = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
        NSDictionary *weather = [results objectForKey:@"weather"];
        NSNumber *id = [weather objectForKey:@"id"];
        out = [id intValue];
    }
#

if I were to guess

#

it's probably the JSON

timid furnace
#

yea you could use some null checks

#

also you can go from results to id in one go

#

results[@"weather"][@"id"]

tepid olive
#

true

timid furnace
#

it'll be nil if any intermediate is nil

tepid olive
timid furnace
#

so just check if your JSON parsed correctly first

tepid olive
#

maybe it's because it's not supposed to be NSNumber?

tepid olive
#

ah

#

how should I do that

timid furnace
#

check if results is nil

tepid olive
#

k

timid furnace
#

and/or actually pass NSError*

tepid olive
#

yeah I could do that

#

this look good

#
NSDictionary *results = [NSJSONSerialization JSONObjectWithData:data options:0 error:&err];
        if(err) {
            NSLog(@"%@",err.description);
            return;
        }
#

hm

#

it still crashes springboard

#

and no NSLog output

#

and same crash log

tepid olive
indigo peak
#

yes

tepid olive
#

oh

indigo peak
#

“%@“, results

tepid olive
#

oh ok

#

ok well

#
    base = stations;
    clouds =     {
        all = 100;
    };
    cod = 200;
    coord =     {
        lat = 0;
        lon = 0;
    };
    dt = 1710466181;
    id = 6295630;
    main =     {
        "feels_like" = "304.52";
        "grnd_level" = 1010;
        humidity = 77;
        pressure = 1010;
        "sea_level" = 1010;
        temp = "301.03";
        "temp_max" = "301.03";
        "temp_min" = "301.03";
    };
    name = Globe;
    sys =     {
        sunrise = 1710482733;
        sunset = 1710526332;
    };
    timezone = 0;
    visibility = 10000;
    weather =     (
                {
            description = "overcast clouds";
            icon = 04n;
            id = 804;
            main = Clouds;
        }
    );
    wind =     {
        deg = 30;
        gust = "0.3";
        speed = "0.32";
    };
}
#

it looks perfectly fine lol

#

I wonder if it's because 804 ain't an NSNumber

#

even though I'm pretty sure it has to be lol

#

lemme try also logging weather

#

make sure that's working right

#

wait

#

is that not a dictionary

#
                {
            description = "overcast clouds";
            icon = 04n;
            id = 804;
            main = Clouds;
        }
    );
#

there's parentheses

indigo peak
#

I think that means areay

#

array

tepid olive
#

it's not in the documentation

#

oh it is an array

#

in the documentation

#

why

#

lol

indigo peak
#

🗿🗿

tepid olive
#

there's only gonna be one weather at one latitude and longitude

indigo peak
#

well thay would explain it

tepid olive
#

why make it an array

indigo peak
#

just access the first element

tepid olive
#

yeah

indigo peak
#

[result[@“weather”] firstObject][@“id”]

tepid olive
#

ye

tepid olive
#

weatherarray[0]

#
NSArray *weatherarray = [results objectForKey:@"weather"];
        NSDictionary *weather = weatherarray[0];
indigo peak
#

Bc I don’t think there’s safety

tepid olive
#

I also need to figure out why latitude and longitude are 0

#

I think it's because missing permissions

#

not sure tho

indigo peak
#

why not just use a built in iOS class for getting weather

#

I don’t get it

tepid olive
#

WeatherKit needs a developer iOS account

#

I looked into it

indigo peak
#

just don’t use weather kit

tepid olive
#

then what am I supposed to use

indigo peak
#

idk figure it out

tepid olive
#

like the weather app APIs???

indigo peak
#

atria doesnt use weatherkit

#

ill tell you that much

#

original aesteroid doesnt use weatherkit

#

meteorite doesnt use weatherkit

tepid olive
#

m

#

I mean either way it'd still need permissions to access location lol

tepid olive
#

but I dun wanna copy

#

I can figure it out myself

indigo peak
#

💀

tepid olive
#

ayyy no more springboard crash

#

except it isn't setting the background

#

even though latitude 0 longitude 0 is currently one of my implemented weathers

gilded ivy
#

Is there a tweak to show system apps in settings

#

For trollstore

timid furnace
#

i'm not sure

faint stag
gilded ivy
#

If u have dopamine or so

#

Or is that still too hard

faint stag
#

then why did u mention trollstore

#

lol

#

i mean i know about the system app registrations

#

but that made me think u weren't jailbroken

#

(still, no tweak exists rn)

lean ermine
#

w appsync u can run trollstore apps as user apps

faint stag
#

so

lean ermine
#

he said dopamine is a possibility

#

idk what his use case is though

hasty ruin
slim bramble
hazy geyser
#

I'm writing a mobile substrate tweak that would like to be able to inject into every process, I'm using the follow (trimmed) plist

   <key>Bundles</key>
   <array>
    <string>com.apple.Security</string>
   </array>

This seems to work but the iOS device fails to boot with the repeating message AppleAuthCPRelay:setAuthError 3 in logs, I'm guessing due to some tamper check? My naive solution is to just not hook this process but I can't find any documentation about an <exclude> field or similar

hasty ruin
#

Within your tweak constructor, you can check the process you’re in before initialising any hooks

hazy geyser
#

Thank you for the tip! I got it working thanks to that

hasty ruin
#

💪

sacred orbit
#

@acoustic imp hey, how do you hook the wallpaper on iOS 15?

knotty tusk
#

i was wondering if any one of you knows which binary and which view controller is responsible for rendering this view, since i want to add a button at the bottom to perform some actions

granite frigate
#

flex it :3

knotty tusk
#

oh yea

#

that exists

#

PSUICellularDataOptionsController

#

oh its in a privateframework

tepid olive
#

c0caine

knotty tusk
#

SettingsCellularUI.framework

tepid olive
#

im making c0caine real

knotty tusk
#

alright now i just have to figure out how tf do i hook this to add a button

tepid olive
#

i need devs

#

who wants to help em

#

🙏

#

i need developers to help me

indigo peak
# knotty tusk alright now i just have to figure out how tf do i hook this to add a button
#import <Preferences/PSListController.h>
#import <Preferences/PSSpecifier.h>

@interface PSUICellularDataOptionsController : PSListController
- (id)getCustomSwitchValue:(PSSpecifier *)specifier;
- (void)setCustomSwitchValue:(id)value specifier:(PSSpecifier *)specifier;
@end

%hook PSUICellularDataOptionsController

- (NSMutableArray*)specifiers {
    // do magic here
}

%new
- (id)getCustomSwitchValue:(PSSpecifier *)specifier {
    // do more magic
}

%new
- (void)setCustomSwitchValue:(id)value specifier:(PSSpecifier *)specifier {
    // do even more magic
}

%end
#

prob smth like that

knotty tusk
#

oh wow

indigo peak
#

i didnt compile it or test it in anyway shape or form, but im assuming thats right 💀

knotty tusk
#

i wasnt expecting anyone to do it

indigo peak
#

i was bored

knotty tusk
#

ill try this when i get home

indigo peak
#

seemed easy

knotty tusk
#

tysm

indigo peak
#

@knotty tusk

knotty tusk
#

tysmmmm i need a button instead so ill modify it when i get home

indigo peak
#

😭

#

im a professional

knotty tusk
#

you really didnt have to thoughhh

#

i kinda wanted to try myself to learn abit

wooden yarrow
#

well now you know

#

tm

indigo peak
knotty tusk
#

alright

#

ty

gilded ivy
placid kraken
hasty ruin
#

No it’ll return nil

indigo peak
#

it returns nil if size 0

#

legit in the docs

placid kraken
#

ah ok

indigo peak
#

💀

#

If the array is empty, returns nil.

placid kraken
indigo peak
#

i did it on mobile yesterday

#

smh

timid furnace
#

sad

#

guess i got tricked by NSDictionary

placid kraken
#
@try {
    thing[0] ?: @“shitdev”
} @catch {
    // RIP.
}
indigo peak
#

what’s the point of the ?:

placid kraken
#

it probably also indexes into uninitialized memory but i honestly don’t care enough to check

placid kraken
indigo peak
indigo peak
#

smartest dev

placid kraken
#

oh yeah also

#

i made a slight speed improvement in an algorithm for a particular project

#

this is a test to find the last object in an array of size 100,000 and it’s an average of 10,000 iterations of each

#

and i’m not just going backwards it’s the same O(k) anywhere in the array where k is the number of properties to search for (for the fast one)

#

the slow one is O(k) best case (0th object) and O(n*k) worst case (last object) where n is the number of items in the array

hasty ruin
#

arr[-1]

placid kraken
#

arr[arr.length - 1]

#

arr[::-1]

#

or undefined

#

depending on the language

hasty ruin
#

arr[arr.length] depending on the language

placid kraken
#

(lua)

hasty ruin
warped sparrow
#

@placid kraken if you need me to test any build to fix that wierd issue where some things are black instead of the usual grey then please send me it!

placid kraken
#

i’ve been super busy throughout the week but during the weekend i’m gonna try to fix that aswell as a silly crash in facebook

warped sparrow
#

thats fine take your time lol

warped sparrow
#

i can just disable tweak injection into carplay

#

but i wont because I'm sure you'll fix it soon

#

and i don't use carplay much

placid kraken
#

it’s been an issue ever since the first release

#

i have a feeling it’s linked to libgcuniversal lol

#

i’m gonna write my own methods for parsing the colors and stuff

knotty tusk
#

alright ive gotten to the point where i can (weirdly?) add a group with a footer and a button to the view

#

but i cant get it to do anything when i tap the button

#

[button setProperty:NSStringFromSelector(@selector(doButtonTap:)) forKey:@"action"];

#

im assuming this is wrong

grim sparrow
olive peak
#

That doesnt work during runtime does it

tepid olive
#

during runtime?

#

no

olive peak
#

Is it possible during runtime?

tepid olive
#

for sure yes

olive peak
#

Like ptrace on linux, does it work same on mac?

tepid olive
olive peak
#

Thx

#

Wait does that work on arm?

#

Thread injection is what i need then

cloud yacht
#

If only zefram was open source

placid kraken
#

and i don’t do that myself it’s a utility method in libgcuniversal

#

sooooooo naturally

knotty tusk
#

i tried with the colon and without the colon

placid kraken
#

then you put - (void)methodName {}in the same place as your specifiers

#

needs to match ofc

knotty tusk
#

ill look into it again tomorrow cuz its late-ish and im tired already

indigo peak
knotty tusk
#

oh

radiant idol
#

NSSstringFromSelector

knotty tusk
#

i swear if its that

indigo peak
radiant idol
indigo peak
#

i just got on pc

#

see

#

i was at the gym

radiant idol
#

proof

kind herald
indigo peak
acoustic imp
kind herald
radiant idol
acoustic imp