yashsingh1/xdaforums huggingface dataset:
[Android] Infinity:
git clone https://github.com/nitrogen-project/android_packages_services_Telephony packages/services/Telephony

(Note = 1st delete existing one)
[Android] aggarwalace:
i am getting the same problem so did you just removed the IPACM from your device.mk ?? :rolleyes:
[Android] DKnightX91:
How would I add something like Magisk and Magiskus in my build? I get how to add an app in but I don't fully get how to add root in.
[Android] Raja_12:
Is there any thread related to posting about some issues like cam,audio,keys not working ? to get help after successful boot.
[Android] neonkat:
track these repo's(put in your manifest)

<project path="external/libnfnetlink" name="LineageOS/android_external_libnfnetlink" remote="github" revision="cm-14.1" />

<project path="external/libnetfilter_conntrack" name="LineageOS/android_external_libnetfilter_conntrack" remote="github" revision="cm-14.1" />
[Android] aggarwalace:
I solved that error thanks ?
[Android] optimumpro:
Building N without Jack Server

I have already asked once, but I think the question got lost. Has anyone figured out how to build Nougat without Jack Server? The usual disabling flag does not work. Actually, it does, but compilation stops, as soon as the first java file needs to be compiled: error - "no target" for sources that clearly exist and properly pointed to. The compiler behaves, as though the sources are not there. I have read on Google code someone was saying that MM could be built without Jack-Server, but not Nougat. I have looked all over Android gerrit, but couldn't find any commits related to disabling Jack server. But if anyone has figured out how to do that, I'd appreciate some guidance. Thanks in advance...
[Android] RVR:
No 64 bit is essential .... 2gb ram is OK ... .
[Android] antarix:
unlucky me. I have only 32 bit system :(
[Android] broodplank1337:
Good guide! Only thing is, I think that the java 6 installation method does not work anymore (i tried it 2 days ago and the apt-repository fails at update)

The new "always working" way is this:

wget https://launchpad.net/~webupd8team/+archive/ubuntu/java/+files/oracle-java6-installer_6u45-0%7Ewebupd8%7E8_all.deb
sudo dpkg -i oracle-java6-installer_6u45-0~webupd8~8_all.deb
wget https://launchpad.net/~webupd8team/+archive/ubuntu/java/+files/oracle-java6-set-default_6u45-0%7Ewebupd8%7E8_all.deb
sudo dpkg -i oracle-java6-set-default_6u45-0~webupd8~8_all.deb

like I did here: https://github.com/TeamRadium/tr-be-script/commit/e9e44cc6fd6836f926643004794eddd75afd4fef

You should think about posting that as well. because it's a more solid solution than adding the apt-repository which gives errors
[Android] socheat:
Thanks for your hard work
[Android] ezio84:
Amazing work, thank you very much.

Some images are not visibile (post #9, 10...).
[Android] RVR:
yea il fix it

EDIT: FIXED
[Android] jackeagle:
OP Updated With New Command :):)

Thank you for your help and for pointing it :):)
[Android] andrman1:
i've this problem while installing java I'm using ubuntu 14.04 :

dpkg: error processing package oracle-java6-set-default (--install):

dependency problems - leaving unconfigured

Errors were encountered while processing:

oracle-java6-set-default
[Android] jackeagle:
Kindly Read OP it is mentioned to use Ubuntu 13.10..:)

Since Ubuntu 14.04 is very unstable I said to use 13.10 ...:)

Kindly use ubuntu 13.10 since i can't respond if you are using different version of Ubuntu Though for your probs there is a solution you might get error for something else which can again lead to confusion :)

Thank you :)
[Android] Hashbang173:
AICP

Hi, I'm trying to build AICP for my OtterX, So far I synced the AICP source. I also renamed some files on my device tree following post #9. I'm not sure what to do next. Any help is appreciated.

Here's my device tree: https://github.com/KFire-Android/android_device_amazon_otterx
[Android] RVR:
aicp needs a little more changes .... .. make the changes as per #9

and then copy the aicp.mk to vendor/aicp/products

and then rename it to the model no

ex: fr galaxy grand ... i9082.mk

IN THE DEVICE TREE

DONT

CHANGE THE AICP.MK name .... change it in the vendor/aicp/product
[Android] Hashbang173:
This is waht I get now, am i missing something:

lunch aicp_otterx-eng
build/core/product_config.mk:238: *** _nic.PRODUCTS.[[vendor/aicp/products/otterx.mk]]: "device/amazon/otter-common/cm.mk" does not exist. Stop.
Device otterx not found. Attempting to retrieve device repository from AICP Github (http://github.com/AICP).
Repository for otterx not found in the AICP Github repository list. If this is in error, you may need to manually add it to .repo/local_manifests/aicp_manifest.xml
build/core/product_config.mk:238: *** _nic.PRODUCTS.[[vendor/aicp/products/otterx.mk]]: "device/amazon/otter-common/cm.mk" does not exist. Stop.

** Don't have a product spec for: 'aicp_otterx'
** Do you have the right repo manifest?
[Android] hp420:
A few questions....

1. Windows VB....can't I just use a full Ubuntu install?

2. Ubuntu 13.10....why not 14.04 LTS?

3. 32 or 64 bit....it definitely matters, as I noticed last time I did this!! Which are we using here?

Very useful guide..I'm just unclear on these points. Thanks!
[Android] martinusbe:
1. yes

2. working on 14.04 here

3. 64 bit needed

grts
[Android] RVR:
If ur on hangouts ... Pl pm ur id ... I'll help u out
[Android] Kishan14:
Mke changes in ur cm.mk rename it to otterx.mk (#9) and copy it to vendor/aicp/products

Then open otterx.mk again and change 'vendor /aicp/configs' to 'vendor/aicp/config'.. Save and exit.. Then try to build..
[Android] Hashbang173:
Well lunch now works, but I get a bunch of warnings, you can see them here

When I do make otapackage, i get this error:

host C++: libinput <= frameworks/native/libs/input/Input.cpp
host C++: libinput <= frameworks/native/libs/input/InputDevice.cpp
i686-linux-g++: error trying to exec '/home/joshua/aicp/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6/bin/../libexec/gcc/i686-linux/4.6.x-google/cc1plus': execv: Argument list too long
make: *** [/home/joshua/aicp/out/host/linux-x86/obj/STATIC_LIBRARIES/libinput_intermediates/Input.o] Error 1
make: *** Waiting for unfinished jobs....
i686-linux-g++: error trying to exec '/home/joshua/aicp/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6/bin/../libexec/gcc/i686-linux/4.6.x-google/cc1plus': execv: Argument list too long
make: *** [/home/joshua/aicp/out/host/linux-x86/obj/STATIC_LIBRARIES/libinput_intermediates/InputDevice.o] Error 1

Here is the full output

Thanks for any input on this.

Edit, I made a the channel ##rombuilding on the freenode network. I'll be on it tommorow if someone wants to help me on there
[Android] caspboy:
Hey, ive got an older phone, LG Ally, I really just want to build the latest cm7.2 for it...where would I retrieve the latest source?
[Android] hp420:
Cool, thanks!!
[Android] Kishan14:
I guess its source issue... Try this steps..

Open terminal

cd aicp

Then type: make clean

Hit enter..

Now type: repo sync -f

After the sync completes..

Type: . build/envsetup.sh

Hit enter... Then type: time brunch otterx
[Android] fritzcola:
I compiled a LS rom,but i doesnt boot! Whats the problem here https://www.dropbox.com/s/up66evfc59573v4/booot.txt?dl=0
[Android] Lalson:
Hey guys,

I'm trying to build rom for Nexus S.. I got stuck at local_manifest.xml, becouase i cannot found Vendor for this device. I have just found http://wiki.cyanogenmod.org/w/Crespo_Info where are Device tree and Kernel, but no Vendor. Could you tell me where can i find the Vendor?

Thanks in Advance.

BTW: Awesome Thread!!
[Android] Hashbang173:
https://github.com/TheMuppets/proprietary_vendor_samsung
[Android] :
which boardconfig.mk :confused:

there are so many
[Android] desalesouche:
all of them of if needed.
[Android] Deep Nox:
Hi everyone, I am trying to make a lollipop rom for my galaxy note 8 n5100, I need a local manifest xml. I need the vender, kernel, etc, info.

Thanks, dk.
[Android] johnnyutah22:
I'm working on a Kit Kat 4.4.4 custom rom for Htc M8. After using the kitchen, it creates the flashable zip. When I flash through TWRP, it appears that it was successful as it does not produce any error messages, however it flashes in about 5 seconds so I know it's not doing anything right. When I hit reboot system, TWRP advises that there is no OS. This leads me to believe that the updater script is not writing the system to the partition. I don't know what's missing or wrong in the updater script and I need some guidance on editing it properly. Here is a link to the updater script I'm currently working on: https://www.androidfilehost.com/?w=files&flid=25895 Any help is greatly appreciated.
[Android] :
Here you go :)

https://drive.google.com/folderview?id=0B2oKFrNf-r_KV3BDNEtFcV9lODA&usp=sharing
[Android] fizbanrapper:
Would it be correct to say that with a 4 core (8 thread) processor, VirtualBox will only really utilize half of the 8 threads that are available to the host OS?

If I were compiling using Ubuntu as host instead, would it therefore stand to reason that I'd be able to compile with twice as many threads as compared to running it in VirtualBox?

Common sense dictates that there are other factors and limitations that will prevent me from compiling twice as fast with 8 cores instead of 4, but wouldn't I still see a significant improvement?
[Android] katinatez:
Yes, having a dedicated build machine with Linux running will use all the resources, which in turn would compile much faster than running a virtual machine. My compiling time for a ROM on average is about 1 hour.
[Android] tobitege:
[MENTION=3814731]katinatez[/MENTION]: 1h with make clean I assume? No CCACHE? Without clean and caching I'm at 20min for BlissPop for 2nd run forwards.
[Android] katinatez:
Yes 1 hour with make clobber, if I dirty build I have compiled in less then 12 mnutes. That was my fastest time using prebuilt chronium.
[Android] fritzcola:
Guys specially dev, do you know how to fix the errors in here https://www.dropbox.com/s/ap3xqmv2wreuw4a/logcat.txt?dl=0.

One error is nuplayer?

Please help me!!
[Android] Lalson:
Hey guys,

i have got stuck on building rom for Samsung Nexus S (Crespo). Here is my local_manifest.xml

<manifest>
<project path="device/samsung/crespo" name="CyanogenMod/android_device_samsung_crespo" remote="github" revision="cm-11.0"/>
<project path="vendor/samsung" name="TheMuppets/proprietary_vendor_samsung" remote="github" revision="cm-11.0"/>
<project path="kernel/samsung/crespo" name="CyanogenMod/android_kernel_samsung_crespo" remote="github" revision="cm-11.0"/>
</manifest>

here is building problem:

tomas@Lalson:~/CyanogenMod/CM11$ . build/envsetup.sh
including device/generic/armv7-a-neon/vendorsetup.sh
including device/generic/goldfish/vendorsetup.sh
including device/generic/mips/vendorsetup.sh
including device/generic/x86/vendorsetup.sh
including vendor/cm/vendorsetup.sh
including sdk/bash_completion/adb.bash
including vendor/cm/bash_completion/git.bash
including vendor/cm/bash_completion/repo.bash
tomas@Lalson:~/CyanogenMod/CM11$ time brunch crespo -j2
including vendor/cm/vendorsetup.sh

Invalid lunch combo: cm_crespo--j2
No such item in brunch menu. Try 'breakfast'

real	0m0.311s
user	0m0.078s
sys	0m0.024s
tomas@Lalson:~/CyanogenMod/CM11$

Thanks in advance. :)
[Android] desalesouche:
. build/envsetup.sh

try " brunch cm_crespo "
[Android] tobitege:
[MENTION=5374692]Lalson[/MENTION]: repo sync then envsetup then breakfast then brunch, check your order of commands

Leave out the "-j2" param, too.
[Android] mohamed786:
How to debug a ROM

For example I want to fix WiFi
[Android] mohit310:
I'm trying to build only the kernel (Boeffla) in this case for my oneplus. I added the correct xml in local manifest as follows

<project name="andip71/boeffla-kernel-cm-bacon" path="kernel/oneplus/msm8974" remote="github" revision="boeffla_v3_cm"/>

After this I ran

. build/envsetup.sh

breakfast bacon

mka bacon

This is giving me issues.

Can someone please help?
[Android] tobitege:
[MENTION=6109902]mohit310[/MENTION]: I've got issues, too! :D But what yours with the build then? We are not mindreaders. ;)
[Android] mohit310:
tobitege, I'm having following issue, i posted on boeffla thread. waiting for reply.

http://xdaforums.com/showpost.php?p=58806568&postcount=2969
[Android] DKnightX91:
Have you tried setting it up like this?

export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx=6g"

export JACK_SERVER_VM_ARGUMENTS="-Xmx6g -Dfile.encoding=UTF-8 -XX:+TieredCompilation"

prebuilts/sdk/tools/jack-admin kill-server

prebuilts/sdk/tools/jack-admin start-server

You can set the 6g to any size you like but I found 6 to work for me. The first command alone didn't work but doing all four does.
[Android] optimumpro:
It is set to 30g and I can see that when jack server starts: it prints the 30g line that I put in .bashrc. My problem is not ram, but rather a PC that has only 2 cores. I do have 12 GB ram, 4GB zram and 27GB swap file. I have been trying to compile, but with jack-server, it takes days and in the middle of compilation, I usually get either 'internal compiler' error or 'failure to communicate with jack server'. LP and MM take no more than 4 hours. I feel I'd have to upgrade my PC, unless I find a way to build without Jack server...
[Android] DKnightX91:
Have you tried in build/core configure_local_jack.mk by changing the line:

LOCAL_JACK_ENABLED := $(strip $(LOCAL_JACK_ENABLED))

Into

LOCAL_JACK_ENABLED := #$(strip $(LOCAL_JACK_ENABLED))
[Android] optimumpro:
I'll try that. But the file deals with default behavior. So, if there is nothing in your BoardConfiguration, then the default is jack enabled. When I put jack disabled in my boardconfig, it tries to compile without Jack, but stops, as soon as the first java file comes up. I think Google removed regular java compilation in N and it is hidden somewhere in the code, as they don't provide commits between android versions...

---------- Post added at 01:42 PM ---------- Previous post was at 01:21 PM ----------

I just compared MM and N configure_local_jack.mk and N has the following additional lines:

ifdef $(LOCAL_MODULE).JACK_VERSION
LOCAL_JACK_VERSION := $($(LOCAL_MODULE).JACK_VERSION)
else
LOCAL_JACK_VERSION := $(JACK_DEFAULT_VERSION)
endif

I am going to try to "#" those lines. You may be onto something here. :)
[Android] DKnightX91:
Give it a shot and report back.
[Android] TimSchumi:
There is a Thread which does focus on which libs have to be taken from original ROM

EDIT: No wait, wrong link. I'll search for it and add it here

EDIT2: Got it. https://xdaforums.com/chef-central/android/guide-how-to-fix-bugs-bootloop-ported-t3310214

I don't know how much this applies to your device, but it's definitely a good starting point
[Android] DKnightX91:
[MENTION=4659955]nicesoni_ash[/MENTION] can you help me with this?
[Android] spookcity138:
Have a look at AICP's vendor repo as they have magisk included. Look at the configs/common.mk file to see how they implement in into their build.

Edit: meant to leave a link

https://github.com/AICP/vendor_aicp
[Android] DKnightX91:
Alright cool. I'll give it a look over. Thanks for the tip.
[Android] optimumpro:
I haven't tried to change the jack config mk, but those 4 commands did the trick and now it is building smoothly with jack: looks like in 2 hours I'll be done. Thanks a lot...
[Android] DKnightX91:
Oh good. I was stuck on that for 2 days. Trial and error got me through with those for commands.
[Android] optimumpro:
Take a look here: https://xdaforums.com/axon-7/how-to/tutorial-build-personal-magisk-rom-t3568687
[Android] DKnightX91:
Thanks I'll give this a read over and see if I can pull it off.
[Android] rohit9757:
Getting this error about readelf command.

although i installed elfutils still it persists.

FIPS : Generating hmac of crypto and updating vmlinux...

/media/rohit/new/AEX/kernel/samsung/k3gxx/scripts/fips_crypto_hmac.sh: line 41: arm-linux-androidkernel-readelf: command not found

/media/rohit/new/AEX/kernel/samsung/k3gxx/scripts/fips_crypto_hmac.sh : arm-linux-androidkernel-readelf returned error

/media/rohit/new/AEX/kernel/samsung/k3gxx/Makefile:811: recipe for target 'vmlinux' failed

make[1]: *** [vmlinux] Error 1

Makefile:130: recipe for target 'sub-make' failed

make: *** [sub-make] Error 2

make: Leaving directory '/media/rohit/new/AEX/kernel/samsung/k3gxx'

anybody can shed some insight into this .. dont seem anyone to get this error:rolleyes:
[Android] Raja_12:
Any one link me to latest boot.img ramdisk unpack/repack tools for windows. I've got some links but it looks old if you have any good links kindly share it. thnks
[Android] Arvind7352:
Probably, edits are to be performed on the script fips_crypto_hmac.sh

The READELF variable is set as $(CROSS_COMPILE)readelf

CROSS_COMPILE value with reference to a Standard Device Tree which uses the Kernel Part of a Toolchain to build the kernel seperately is arm-linux-androidkernel-

And arm-linux-androidkernel-readelf does not exist, GO here for reference

As you can see in the reference, arm-linux-androideabi-readelf exists, but the one which is needed by the script (arm-linux-androidkernel-readelf) does not.

You should now provide your sources, so that I could comment on a precise solution.

I took this Kernel Source as a reference.
[Android] rohit9757:
Our kernel sources

https://github.com/somadsul/android_kernel_samsung_k3gxx/blob/cm-14.1/scripts/fips_crypto_hmac.sh
[Android] DKnightX91:
Thanks for the good idea here. I see how he setup the zip install part but for the MagiskManager.apk part I am a bit lost still. In the LOS setup there is no prebuilt/Android.mk to add the second half. I'll do more digging but thanks for the big step forwards on this.
[Android] DJKristy:
How to build a vendor tree?

Pls help
[Android] spookcity138:
You can just have the build copy the MagiskManager.apk. You can place the apk anywhere you want really and just add the correct path to product copy files in the common.mk or elsewhere. Good luck!
[Android] spookcity138:
You need to extract the proprietary blobs from your phone. A couple links that may help..

https://www.google.nl/amp/s/techsta...acting-proprietary-files-from-the-device/amp/

https://github.com/JackpotClavin/Android-Blob-Utility
[Android] DKnightX91:
Thanks for that. Got it in and working.
[Android] MSF Jarvis:
No you don't have to fix those warnings
[Android] aggarwalace:
Any fix for this ??
[Android] Vijay chandra:
bro my device has tree but it has bugs i mean only RR,CM are working with it no other rom is booting even cm based roms are also not booting .. pls hlp
[Android] neonkat:
vendor/qcom/binaries repo is deprecated.don't track that repo(in case you have that in ypur manifest or dependencies).

check your device and vendor tree,those libs must have been imported to it.
[Android] Infinity:
Deleted ;p
[Android] TimSchumi:
I can't help with device-specific errors. Take a logcat, give additional information and the community MAY be able to help.
[Android] nicesoni_ash:
And you seriously need to post proper logs. Everytime someone has to ask you. If you need help, follow the proper guidelines.

Sent from my "1+2" powered by Official RR 7.x.x

Compiled by myself
[Android] Infinity:
building PA....sepolicy error

i am stucked here since years. i tried many solutions... but didn't work any.

Note -> Please don't suggest any dirty solution like commenting a line etc. (i tried such things already)

Thanks in advance !
[Android] Vijay chandra:
ok for sure ,, ill give it soon
[Android] neonkat:
comment out line 5 in sepolicy/fsck.te

and make sure you nake kernel permissive.
[Android] DKnightX91:
After more testing I did find I was missing some more stuff, but I did find it.

https://github.com/AICP/build/commit/95ba5e4bbd9293f090394b6b59820b44a0c540c5

Need to do more testing. I'll report back.
[Android] spookcity138:
Ahh yes, good catch on that! I'd think that should be all you need. Hope that makes it work out.
[Android] Infinity:
How to make sure that kernel is permissive or not ?

(Did you mean that permissive line bc.mk ?)
[Android] neonkat:
https://github.com/neonkat/android_...mmit/81ad0461434cac6fcfbb22bfb54702cf12f0de24
[Android] Raja_12:
https://hastebin.com/iwogomagof.sql

Device

Rom nitrogen-caf
[Android] Infinity:
Take audio, media & display from nitrogen-caf

Clone it to hardware/qcom/here*

Delete current files if any
[Android] Arvind7352:
You can create none other than NullROM (Nothing :silly:)

Well, to be clear, you need the sources to get various Hardware Modules working and communicating with each other, which eventually get the Software part up and running.

Android's Code base is too vast (which was started from Scratch since 2005), that it is mandatory for the user to build on their Source Code, and make necessary changes in Some areas (that's Obvious) to get the Operating System completely working for a Particular Device.

Now If you are kinda satisfied with my Answer and if you wanted to know the Programming Languages involved in Building Android - This Post
[Android] DKnightX91:
Well I ran into more problems

FAILED: /bin/bash -c "(echo "./build/tools/releasetools/ota_from_target_files" > /home/dknightx91/android/LineageOS/out/target/product/oneplus2/ota_script_path ) && (PATH=/home/dknightx91/android/LineageOS/out/host/linux-x86/bin/:\$PATH MKBOOTIMG=/home/dknightx91/android/LineageOS/out/host/linux-x86/bin/mkbootimg	./build/tools/releasetools/ota_from_target_files -v	--block	-p /home/dknightx91/android/LineageOS/out/host/linux-x86	-k build/target/product/security/testkey	--backup=true	/home/dknightx91/android/LineageOS/out/target/product/oneplus2/obj/PACKAGING/target_files_intermediates/lineage_oneplus2-target_files-258b8172d0.zip /home/dknightx91/android/LineageOS/out/target/product/oneplus2/lineage_oneplus2-ota-258b8172d0.zip )"

File "./build/tools/releasetools/ota_from_target_files", line 773

script.ShowProgress(0.2, 10)

.......................................................................^

IndentationError: unindent does not match any outer indentation level

ninja: build stopped: subcommand failed.

build/core/ninja.mk:151: recipe for target 'ninja_wrapper' failed

make: *** [ninja_wrapper] Error 1

make: Leaving directory '/home/dknightx91/android/LineageOS'

---------- Post added at 10:18 AM ---------- Previous post was at 12:03 PM ----------

Fixed the first problem now to the next.:mad:

FAILED: /bin/bash -c "(echo "./build/tools/releasetools/ota_from_target_files" > /home/dknightx91/android/LineageOS/out/target/product/oneplus2/ota_script_path ) && (PATH=/home/dknightx91/android/LineageOS/out/host/linux-x86/bin/:\$PATH MKBOOTIMG=/home/dknightx91/android/LineageOS/out/host/linux-x86/bin/mkbootimg	./build/tools/releasetools/ota_from_target_files -v	--block	-p /home/dknightx91/android/LineageOS/out/host/linux-x86	-k build/target/product/security/testkey	--backup=true	/home/dknightx91/android/LineageOS/out/target/product/oneplus2/obj/PACKAGING/target_files_intermediates/lineage_oneplus2-target_files-d088eaa582.zip /home/dknightx91/android/LineageOS/out/target/product/oneplus2/lineage_oneplus2-ota-d088eaa582.zip )"

Traceback (most recent call last):

File "./build/tools/releasetools/ota_from_target_files", line 147, in <module>

import edify_generator

File "/home/dknightx91/android/LineageOS/build/tools/releasetools/edify_generator.py", line 174

def FlashMagisk(self):

.......................................................^

IndentationError: unindent does not match any outer indentation level

ninja: build stopped: subcommand failed.

build/core/ninja.mk:151: recipe for target 'ninja_wrapper' failed

make: *** [ninja_wrapper] Error 1

make: Leaving directory '/home/dknightx91/android/LineageOS'

---------- Post added at 12:03 PM ---------- Previous post was at 1:18PM ----------

And I got it 100% working.

[100% 1697/1697] build bacon

Package Complete: /home/dknightx91/android/LineageOS/out/target/product/oneplus2/lineage-14.1-20170314-UNOFFICIAL-oneplus2.zip

make: Leaving directory '/home/dknightx91/android/LineageOS'

#### make completed successfully (57:00 (mm:ss)) ####
[Android] Arvind7352:
Google is your Friend

Some good Collection of Programming Resources...

XDA - 1

XDA - 2

GitHub - 1

GitHub - 2

#HappyBuilding